最初更改ViewView的ViewView背景

时间:2013-09-16 16:40:29

标签: java android listview view android-arrayadapter

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

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

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

3 个答案:

答案 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();

我认为这将解决您的问题