更改列表背景问题

时间:2011-07-18 09:53:40

标签: android listview

我有 ListView ,点击列表项后,它会启动另一项活动。

所以我的问题是,当我点击列表项时,它应该更改其背景并移动到另一个活动,并且在按下此活动时,列表项应保留其更改的背景颜色。再次单击另一个列表,它应该删除较早的背景颜色并再次执行相同操作。

提前致谢。

4 个答案:

答案 0 :(得分:0)

你需要ListView中的setItemChecked()方法。如果您将项目放在侦听器中的onItemClick()方法中,则应使您单击“永久打开”的项目。请注意,当您导航到下一个活动时,您必须使用onSaveInstanceState()onRestoreInstanceState()来存储点击ListView中的哪个项目;我不相信当您使用Activity离开ListView时,Android会保留点击哪一个。

在开发人员网站的here的Fragments部分中有相当好的教程。

希望这有帮助。

答案 1 :(得分:0)

跟踪所选项目。使用自定义适配器并覆盖getView方法。在此方法中,检查视图的位置是否为所选项目,并相应地更改视图的背景。

答案 2 :(得分:0)

覆盖项目单击侦听器并执行以下操作以更改所单击视图的颜色:

listView1.setOnItemClickListener(new ListView.OnItemClickListener()
{    
   public void onItemClick(AdapterView<?> arg0, View v, int arg2, long arg3)
   {
      v.setBackgroundColor(Color.BLACK);                
   }
});

答案 3 :(得分:0)

我通过 setItemChecked()解决这个问题,并在我的布局xml文件中的ListView中使用 android:choiceMode =“singleChoice ”。我在单击列表中的项目时使用MyClass.this.getListView().setItemChecked(position,true);,而在getView()上我正在执行此操作...

 if(position == MyClass.this.getListView().getCheckedItemPosition()){

                holder._newsLinear.setBackgroundColor(Color.CYAN);
            }
            else{

                holder._newsLinear.setBackgroundColor(Color.BLACK);
            }