簡體   English   中英

如何在RecylerView適配器中更新數據

[英]How to update data in RecylerView adapter

我有一個recyclerview適配器,其中每個視圖都有一個按鈕。 我想實現一個fuc = nctionality,以便如果我在任何視圖上單擊按鈕,則應該更新recyclerview的所有視圖。 如何實現呢? 這就是我在onBindViewHolder中所做的

 public class StoryItemAdapter extends RecyclerView.Adapter<StoryItemAdapter.ViewHolder> {

LayoutInflater inflater;
Context context;
Bitmap bm;
ImageLoader imloader;
static ArrayList<StoryDetails> stories;


OnItemClickListener mItemClickListener;
public StoryItemAdapter(Context context,ArrayList<StoryDetails> stories) {
    this.context = context;
    this.stories = stories;
    inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    imloader = ImageLoader.getInstance();
    imloader.init(ImageLoaderConfiguration.createDefault(context));


}

@Override
public long getItemId(int position) {

    return 0;
}

@Override
public int getItemCount() {

    return stories != null ? stories.size() : 0;
}

@SuppressWarnings("deprecation")
@Override
public void onBindViewHolder(ViewHolder holder, int position) {


    if(stories.get(position).getType()==null) {
        holder.user_handle.setText(stories.get(position).getUsername() + "( " + stories.get(position).getHandle() + " )");

        File file = imloader.getDiscCache().get(stories.get(position).getImage());
        if (!file.exists()) {
            DisplayImageOptions options = new DisplayImageOptions.Builder()
                    .cacheOnDisc()
                    .build();
            imloader.displayImage(stories.get(position).getImage(), holder.image, options);
        } else {
            holder.image.setImageURI(Uri.parse(file.getAbsolutePath()));
        }

        holder.about.setText(stories.get(position).getAbout());
        holder.followers.setText("Followers\n\r" + stories.get(position).getFollowers());
        holder.following.setText("Following\n\r" + stories.get(position).getFollowing());
    }
    else
    {
        holder.user_handle.setText(stories.get(position).getTitle());

        File file = imloader.getDiscCache().get(stories.get(position).getSi());
        if (!file.exists()) {
            DisplayImageOptions options = new DisplayImageOptions.Builder()
                    .cacheOnDisc()
                    .build();
            imloader.displayImage(stories.get(position).getSi(), holder.image, options);
        } else {
            holder.image.setImageURI(Uri.parse(file.getAbsolutePath()));
        }

        holder.about.setText(stories.get(position).getDescription());
        holder.followers.setText("Likes \n\r" + stories.get(position).getLikes_count());
        holder.following.setText("Comments \n\r" + stories.get(position).getComment_count());


    }

    if(stories.get(position).getIs_following())
    {
        holder.follow.setText("Following");
    }
    else
        holder.follow.setText("Follow");

    final int  p = position;
    final ViewHolder h = holder;

    holder.follow.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if(stories.get(p).getIs_following())
            {
                stories.get(p).setIs_following(false);
                h.follow.setText("Follow");


            }
            else {
                stories.get(p).setIs_following(true);
                h.follow.setText("Following");
            }


            for(int i =0;i <stories.size();i++) {
                if (stories.get(p).getDb() != null) {

                    if(stories.get(p).getDb().equals(stories.get(i).getId()))
                    {
                        stories.get(p).setIs_following(stories.get(i).getIs_following());

                    }


                }
            }



        }
    });


}



@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
    View itemView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.story_adapter, viewGroup,
            false);
    return new ViewHolder(itemView);

}


public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

    ImageView image;
    TextView user_handle, about, followers,following,userSince;
    Button follow;


    public ViewHolder(View itemView) {
        super(itemView);
        user_handle = (TextView) itemView.findViewById(R.id.user_handle);
        about = (TextView) itemView.findViewById(R.id.about);
        followers = (TextView) itemView.findViewById(R.id.followers);
        following = (TextView) itemView.findViewById(R.id.following);
       // userSince = (TextView) itemView.findViewById(R.id.user_since);
        image = (ImageView) itemView.findViewById(R.id.user_image);
        follow =(Button) itemView.findViewById(R.id.follow);



        RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT);

        image.setLayoutParams(rlp);
        image.setAdjustViewBounds(true);
        image.setScaleType(ImageView.ScaleType.FIT_CENTER);

        itemView.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {



        if (mItemClickListener != null) {
            mItemClickListener.onItemClick(v, getPosition());
        }
    }

}

public interface OnItemClickListener {
    public void onItemClick(View view , int position);
}

public void SetOnItemClickListener(final OnItemClickListener mItemClickListener) {
    this.mItemClickListener = mItemClickListener;
}

}

您需要將任何數據集更改通知適配器。

嘗試這個..

 holder.follow.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if(stories.get(p).getIs_following())
            {
                stories.get(p).setIs_following(false);
                h.follow.setText("Follow");


            }
            else {
                stories.get(p).setIs_following(true);
                h.follow.setText("Following");
            }


            for(int i =0;i <stories.size();i++) {
                if (stories.get(p).getDb() != null) {

                    if(stories.get(p).getDb().equals(stories.get(i).getId()))
                    {
                        stories.get(p).setIs_following(stories.get(i).getIs_following());

                    }


                }
            }
            notifyDataSetChanged();

        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM