RecyclerView物品位置没有更新 [英] RecyclerView Item position does not get update

查看:64
本文介绍了RecyclerView物品位置没有更新的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在下面的代码中,我可以通过单击imgBtn删除图像,但是我的图像不会滚动删除的图像位置,它只会保持其当前位置,不会更新.

In the following code, I could able to delete the image via clicking imgBtn, but my images does not scroll the deleted image position, it just stays its current position, it does not update.

主要活动课程

ItemData itemsData[] = {new ItemData("Help", R.drawable.image),
            new ItemData("Delete", R.drawable.orange),
            new ItemData("Cloud", R.drawable.image),
            new ItemData("Favorite", R.drawable.orange),
            new ItemData("Like", R.drawable.image),
            new ItemData("Rating", R.drawable.orange)};

 RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
 recyclerView.setHasFixedSize(true);
 LinearLayoutManager llm = new LinearLayoutManager(this);
 llm.setOrientation(LinearLayoutManager.HORIZONTAL);
 recyclerView.setLayoutManager(llm);
 CustomAdapter mAdapter = new CustomAdapter(itemsData);
 recyclerView.setAdapter(mAdapter);

ItemData类

public class ItemData {
private String title;
private int imageUrl;

public ItemData(String title,int imageUrl){

    this.title = title;
    this.imageUrl = imageUrl;
}
String getTitle(){return title;}
void setTitle(String t){title = t;}
int getImageUrl(){return imageUrl;}
void setImageUrl(int t){imageUrl = t;}
}

自定义适配器类

public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.ViewHolder>
{
    private ItemData[] itemsData;
    private Context context;
    private CustomAdapter thisAdapter = this;

    public CustomAdapter( ItemData[] itemsData) {
        this.itemsData = itemsData;
    }


@Override
public void onBindViewHolder(ViewHolder viewHolder, int pos) {
    final int position = pos;  

    viewHolder.imgViewIcon.setImageResource(itemsData[position].getImageUrl());
    viewHolder.imgBtn.setImageResource(R.drawable.ic_close_black_24dp);

    viewHolder.imgBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ((FrameLayout) v.getParent()).removeAllViews();
        }
    });
 }

}

推荐答案

如果要从recylerview中删除Item.不要这样做.

If you want to remove Item from the recylerview. dont do it like this.

因为您使用的是ItemData []数组

Because you using ItemData[] array

List<ItemData> numlist = new ArrayList<ItemData>();
for(int i= 0;i<itemsData.length;i++)
{
    if(i == position)
    {
        // No operation here 
    }
    else
    {
        numlist.add(arr_fav[i]);
    }
}
itemsData = numlist.toArray(new String[numlist .size()]);
notifyItemRemoved(position);
notifyItemRangeChanged(0, mDataset.size());

如果将其转换为List<ItemData>,请使用 asadmshas的答案

If you convert it to List<ItemData> Go with asadmshas's Answer

这篇关于RecyclerView物品位置没有更新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆