如何防止数据在android中的滚动列表视图中更改

时间:2015-04-18 14:55:12

标签: android listview android-listview

我正面临一个问题。我正在点击listview项目更改图像 示例(我正在将开始图像从灰色图像更改为星形图像)

但是当我滚动列表视图时,它会将之前的图像设置为灰色图像

我想知道如何阻止更改滚动

这是我的代码

imglayout.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {

        Boolean clickable = true;
        String pro_tilte = TitleArray.get(position).toString();
        Iterator itr = bookmarkTitleArray.iterator();
        while(itr.hasNext()) {
            String duplicatetile = itr.next().toString();
            if(pro_tilte.equals(duplicatetile)) {
                im4.setClickable(false);
                clickable=false;
            }
        }

        if(clickable) {
            im4.setClickable(true);
            String title=TitleArray.get(position);
            for (Map.Entry<String,String> entry : LoadDataInBackEnd.productpageid.entrySet()) {
                String key = entry.getKey();
                if(key.equals(title)) {
                    gross_page_id= entry.getValue();
                }
            }

            new savebookmark().execute("http://pac2.menaguale.com/api/user/user-bookmark");
            ViewGroup viewGroup = (ViewGroup)v.getParent();
            // access likecount TextView from feed_item layout

           ImageView imagechange = (ImageView)viewGroup.findViewById(R.id.Pbookmark);
           imagechange.setImageResource(R.drawable.star);
        }
    }
});

1 个答案:

答案 0 :(得分:0)

您需要在适配器中跟踪对ListView项所做的任何更改。如果要更改列表项并在滚动回视图时将其还原,则表示项目的状态未在适配器中捕获,以便在getView()方法中使用。

由于ListView会回收项目视图,因此需要在适配器/模型中的某处找到重新创建列表项所需的所有内容。

确保适配器中的列表项模型具有可捕获图像状态的字段,然后让onClick()设置状态并让getView()读取状态。