如何在列表视图显示在Android应用程序之前以编程方式编辑列表视图元素的背景颜色?

时间:2015-11-22 23:20:49

标签: java android listview android-listview listviewitem

我正在Android Studio中使用Java创建一个Android应用程序。我需要创建一个列表视图,其中重新创建列表视图时,先前选定的元素将显示为已选中。可以选择列表视图中的多个元素。首先会创建列表视图,我们将跟踪Pair<String, boolean>列表中保存的内容,其中String是列表视图元素,boolean表示元素是否元素被选中了。

我使用

处理背景颜色的变化
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
        {

            if(!tmpSelectedSkills.get(position).isSelected()){
                tmpSelectedSkills.get(position).setIsSelected(true);
                parent.getChildAt(position).setBackgroundColor(
                    Color.parseColor("#A9BCF5"));}
            else{
                tmpSelectedSkills.get(position).setIsSelected(false);
                parent.getChildAt(position).setBackgroundColor(
                        Color.parseColor("#ffffff"));}
        }

如果用户关闭列表视图并选择重新创建它以更改其选择,我希望在向用户显示之前在新列表视图中更改其先前选择的背景颜色。

为此,我需要访问

View view

来自onItemClick的签名,对应于我想要更改背景颜色的View

1 个答案:

答案 0 :(得分:0)

您可以在updateData()中创建方法adapter。在YourObject List<YourObject> boolean中为已知选中的字段clickOnItem定义。在您使用listview true时,请按方法notifyDataChanged将此字段设置为updateData()(a | b) => [1, 2, 3, 4, 5, 6] (a & b) => [2, 4] (a | b) - (a & b) [1, 3, 5, 6] 。在适配器中,检查fields == true,是否为行设置了backgroud。对不起,我的英文不好