如何在滚动时保留listview选中/单击的项目颜色?

时间:2013-01-09 23:34:32

标签: android-layout android-widget android-listview

这真是一个奇怪的问题,我遇到了几个谷歌搜索,这些搜索都是徒劳的。

我有一个列表视图,在用户点击项目时应该更改所选的项目颜色。

这篇帖子帮我改变了列表视图中选择的项目颜色。现在,我可以在单击项目时更改颜色。但是,如果我滚动列表视图,颜色会跳出选择。

https://stackoverflow.com/a/12080202/1657093

如果选择了一个项目,例如说第一行的列表视图项目也会选择最后一个项目,同时滚动项目颜色继续移动到我从未选择过的项目。

这是列表视图

<ListView
     android:id="@+id/loadedlist"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:layout_above="@+id/horizontalScroll"
     android:layout_alignParentLeft="true"
     android:layout_below="@+id/Title"
     android:layout_toLeftOf="@+id/sidepanel"
     android:scrollingCache="false">

    </ListView>

我使用数组适配器填充列表视图

ringlist.setAdapter(new ArrayAdapter
             (这一点,android.R.layout.simple_list_item_1,环));

并在点击方法上使用列表视图来设置颜色

ringlist.setOnItemClickListener(new OnItemClickListener() {
     @Override
    public void onItemClick(AdapterView<?> parent, View view, int pos,long id) {
        // TODO Auto-generated method stub
    try{
    String con;
        String s =  ringlist.getItemAtPosition(pos).toString();
        con = s.toLowerCase();
    String selectedFromList = con;
            int resId = getResources().getIdentifier(selectedFromList, "raw",    
            "com.example.android");

            }
    if (row != null) {
            row.setBackgroundColor(Color.BLACK);
            }

           row = view;
               view.setBackgroundColor(Color.GREEN);
                }

       }  

        });

上面的代码完成了这项工作,但滚动列表出了问题

请告知。

2 个答案:

答案 0 :(得分:0)

这是android中Listview的常见问题。 当我们在向下或向上滚动后在Listview项目中使用复选框/单选按钮时,所选位置会在某些不同的位置发生变化。 到目前为止,唯一的解决方案是,我们需要在arraylist(或任何你感到舒适的结构)中保持所选位置。 当您向上/向下滚动列表视图时,会调用getview。 因此,在getview()中编写代码,以便从arraylist中选择复选框项。 也不要在getview中为convertview使用if-else条件。

答案 1 :(得分:0)

在onItemClick()方法中存储集合或数组中的单击/选定位置。编写代码以使用存储位置显示适配器的getview()方法中的单击/选定项目。