Skip to content Skip to sidebar Skip to footer

How To Get Item Position For Recycle-view

I'm an Android programmer, I'm developing a news app using RSS feed that get the the news from the web, my code work fine ! but I wont when I click on any news to open new activity

Solution 1:

I'm not sure that I understand you. But to check when a user clicks a news, you have to add the following code to your FeedsAdapter

@OverridepublicvoidonBindViewHolder(MyViewHolder holder, finalint position) {
  holder.itemView.setOnClickListener(newView.OnClickListener() {
        @OverridepublicvoidonClick(View view) {
            FeedItemitem= feedItems.get(position);
            //start your activity here
        }
    });
  //other code
}

Solution 2:

So you can use a Callback interface to pass the data like

interfaceDisplayNews{
voidnewsDetail(int position);// any name as per your requirement 
}

Then implement that interface in your base activity/fragment like

classNewsActivityimplementsDisplayNews{
@OverridevoidnewsDetail(int position){
  // get your list item/element from list using postion and pass that into  intent to new activity
}
}

And in your adapter change the adapter contractor and some tiny code like

publicclassFeedsAdapterextendsRecyclerView.Adapter<FeedsAdapter.MyViewHolder> {
ArrayList<FeedItem>feedItems;
Context context;
private DisplayNews callback;
publicFeedsAdapter(Context context, ArrayList<FeedItem>feedItems,DisplayNews callback){
    this.feedItems=feedItems;
    this.context=context;
    this.callback=callback;

}
@Overridepublic MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view= LayoutInflater.from(context).inflate(R.layout.custum_row_news_item,parent,false);
    MyViewHolder holder=newMyViewHolder(view);
    return holder;
}

@OverridepublicvoidonBindViewHolder(MyViewHolder holder, int position) {
    YoYo.with(Techniques.FadeIn).playOn(holder.cardView);
    FeedItem current=feedItems.get(position);
    holder.Title.setText(current.getTitle());
    holder.Description.setText(current.getDescription());
    holder.Date.setText(current.getPubDate());
    Picasso.with(context).load(current.getThumbnailUrl()).into(holder.Thumbnail);
holder.itemView.setOnClickListener(view -> callback.newsDetail(holder.getAbsoluteAdapterPosition());

}
@OverridepublicintgetItemCount() {
    return feedItems.size();
}
publicclassMyViewHolderextendsRecyclerView.ViewHolder {
    TextView Title,Description,Date;
    ImageView Thumbnail;
    CardView cardView;
    publicMyViewHolder(View itemView) {
        super(itemView);
        Title= (TextView) itemView.findViewById(R.id.title_text);
        Description= (TextView) itemView.findViewById(R.id.description_text);
        Date= (TextView) itemView.findViewById(R.id.date_text);
        Thumbnail= (ImageView) itemView.findViewById(R.id.thumb_img);
        cardView= (CardView) itemView.findViewById(R.id.cardview);
    }
}
,,, 

Post a Comment for "How To Get Item Position For Recycle-view"