0

我现在正在实现一个包含一个包含 ListView 的 Activity 的应用程序,当用户选择列表视图中的任何项目时,该视图的背景和文本颜色会发生变化,因此,我将这个更改的代码放在onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3)方法中..但是,这不是问题。

问题是,当我打开活动时,我需要“在用户选择任何东西之前”进行初始选择......所以我做了listView.setSelection(index);,但不幸的是,这段代码没有调用onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3)......所以,视图没有t 更改了“背景和文本颜色”。

任何解决方案..?!!!谢谢,

4

3 回答 3

0

在您的适配器中创建一个方法来设置选择(或在构造函数中进行):

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 方法中,调用 Adapter 的 setSelectedPos 方法。您将解决您评论的问题,并且当您选择的视图在屏幕上不再可见并返回屏幕时,仍将被标记为已选中(我很确定它以原始背景出现)。

于 2013-09-16T17:06:58.590 回答
0

尝试 onItemSelected 进行选择

在列表视图中选择 iem 不会触发 onItemClick

于 2013-09-16T17:04:22.333 回答
0

设置选择后

 listView.setSelection(index);

然后在调用

listView.getAdapter().notifyDatasetChanged();

我想这会解决你的问题

于 2013-09-16T19:41:12.570 回答