我需要在列表视图中突出显示选定行。例如:如果我选择第一个项目,则选择第三个项目,然后删除突出显示的第一个项目,然后突出显示第三个项目。列表视图突出显示所选行
我见过很多在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