我需要在列表視圖中突出顯示選定行。例如:如果我選擇第一個項目,則選擇第三個項目,然後刪除突出顯示的第一個項目,然後突出顯示第三個項目。列表視圖突出顯示所選行
我見過很多在Stackoverflow上發佈的例子和問題,但沒有找到合適的解決方案。
下面是我的代碼,它的工作原理,但我需要選擇項目兩次突出顯示,我該如何修改這個工作順利?
ListView mainListView = (ListView) findViewById(R.id.mainListView);
// Create and populate a List of planet names.
planets = new String[] { "Mercury", "Venus", "Earth", "Mars",
"Jupiter", "Saturn", "Uranus", "Neptune",
"Ceres","Pluto","Haumea","Makemake","Eris"};
planetList = new ArrayList<String>();
planetList.addAll(Arrays.asList(planets));
planetsAdapter = new PlanetsAdapter (this,planetList);
planetsAdapter .setNotifyOnChange(true);
// Set the ArrayAdapter as the ListView's adapter.
mainListView.setAdapter(planetsAdapter);
mainListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
mainListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
planetsAdapter.setSelectedPosition(position);
planetsAdapter.notifyDataSetChanged();
}
});
改編類:
public class PlanetsAdapter extends ArrayAdapter<String> {
private ArrayList<String> planets;
private Context mContext = null;
private LayoutInflater inflater;
// used to keep selected position in ListView
private int selectedPos = -1; // init value for not-selected
public PlanetsAdapter (Context context,ArrayList<String> objects) {
super(context,0,objects);
mContext = context;
planets = objects;
}
public void setSelectedPosition(int pos){
selectedPos = pos;
// inform the view of this change
}
public int getSelectedPosition(){
return selectedPos;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.list_item, null);
}
TextView title = (TextView) convertView
.findViewById(R.id.rowTextView);
// change the row color based on selected state
if(position == selectedPos){
//title.setTextColor(Color.parseColor("#FFFFFF"));
title.setBackgroundColor(Color.parseColor("#ED07E1"));
}else{
//title.setTextColor(Color.parseColor("#000000"));
title.setBackgroundColor(Color.parseColor("#e2e2e2"));
}
title.setText(getItem(position));
return convertView;
}
}
編輯:回答下面
For anyone who is looking for answers, i have answered it below hope it helps.
嘗試添加'notifyDataSetChanged();'到'setSelect edPosition'在你的適配器 – 2015-01-21 06:25:47
@MD以前曾嘗試過,但仍然需要選擇項目兩次才能突出顯示。 – user2056563 2015-01-21 06:29:19
你的問題對我來說是不可理解的。 '選擇項目兩次以突出顯示'。 – 2015-01-21 06:31:38