2

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

好吧,我有一个列表视图,其中在用户单击项目时应更改所选项目的颜色。

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

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
(this,android.R.layout.simple_list_item_1,rings));

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

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);
                }

       }  

        });

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

请指教。

4

2 回答 2

0

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

于 2013-03-21T06:57:02.353 回答
0

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

于 2017-05-13T23:17:46.797 回答