我现在正在实现一个包含Activity包含ListView的应用程序,当用户选择列表视图中的任何项目时,背景&amp;此视图的文本颜色已更改,因此,我将此更改的代码放在onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3)
方法中..但是,这不是问题。
问题是,当我打开活动时,我需要在“用户选择任何东西之前”进行初始选择..所以我做了listView.setSelection(index);
,但不幸的是,这段代码没有调用onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3)
..因此,视图不会更改“背景和文字颜色”。
任何解决方案......?!!! 谢谢,
答案 0 :(得分:0)
尝试使用onItemSelected进行选择
在列表视图中选择iem不会触发onItemClick
答案 1 :(得分:0)
在yout Adapter中创建一个方法来设置选择(或在构造函数中执行):
public myAdapter (COntext context, int initialSelectedPos){
setSelectedPos(initialSelectedPos);
}
public void setSelectedPos(int pos){
mSelectedPos = pos;
}
然后检查你的getView给出的pos与mSelectedPos相同。
@Override
public View getView(..., int pos){
/*convertView stuff*/
if (pos == mSelectedPos){
//Put the background as it is selected
}else{
//...
}
return view;
}
在OnItemClickListener的OnItemClick方法中,调用适配器的setSelectedPos方法。 您将解决您评论的问题,并且当您选择的视图在屏幕上不再可见并返回到屏幕时,仍将被标记为已选中(我非常确定它与原始背景一起出现)。
答案 2 :(得分:0)
listView.setSelection(index);
然后调用
listView.getAdapter().notifyDatasetChanged();
我认为这将解决您的问题