【问题标题】:Change list background problem更改列表背景问题
【发布时间】:2023-04-06 08:03:02
【问题描述】:

我有一个 ListView,单击列表项时,它会启动另一个活动。

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

提前致谢。

【问题讨论】:

  • 嗨,sujit,我也面临同样的问题,这意味着我想在单击列表时更改背景颜色。和你的问题一样,你能不能为我提供同样的解决方案,我会非常感谢你和你将成为我的保护者(上帝).vv 感谢电子邮件 ID:saurabh26213@gmail.com
  • 我已经在下面添加了我的答案...

标签: android listview


【解决方案1】:

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

在开发者网站的片段部分有一个很好的教程,here

希望这会有所帮助。

【讨论】:

  • 感谢您的回复......但我已经解决了它没有使用 onSaveInstanceState() 。
【解决方案2】:

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

【讨论】:

  • 感谢您的回复。请参阅上面的我的答案。
【解决方案3】:

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

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

【讨论】:

  • 但是当我们滚动列表时,它会为列表项随机设置黑色背景。
【解决方案4】:

我通过 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);
            }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-19
    • 2021-02-11
    • 1970-01-01
    • 2011-08-04
    • 2013-01-27
    • 1970-01-01
    • 1970-01-01
    • 2012-10-23
    相关资源
    最近更新 更多