2016-02-19 36 views
0

有一个RecycleView适于通过模型的图像&文本自定义布局 每一件事情是确定的只是我需要点击项目通过OnClickListener请帮我RecycleView OnClickListener

FeedItem.java

public class FeedItem { 
private String title; 
private String thumbnail; 

public String getTitle() { 
    return title; 
} 

public void setTitle(String title) { 
    this.title = title; 
} 

public String getThumbnail() { 
    return thumbnail; 
} 

public void setThumbnail(String thumbnail) { 
    this.thumbnail = thumbnail; 
}} 

FeedListRowHolder.java

public class FeedListRowHolder extends RecyclerView.ViewHolder { 
protected ImageView thumbnail; 
protected TextView title; 
Context context; 

public FeedListRowHolder(View view) { 
    super(view); 
    this.thumbnail = (ImageView) view.findViewById(R.id.thumbnail); 
    this.title = (TextView) view.findViewById(R.id.title); 


}} 

MyRecyclerAdapter.java

public class MyRecyclerAdapter extends RecyclerView.Adapter<FeedListRowHolder> { 
private List<FeedItem> feedItemList; 
private Context mContext; 
public MyRecyclerAdapter(Context context, List<FeedItem> feedItemList) { 
    this.feedItemList = feedItemList; 
    this.mContext = context; 
} 

@Override 
public FeedListRowHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
    View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_row, null); 
    FeedListRowHolder mh = new FeedListRowHolder(v); 

    return mh; 
} 

@Override 
public void onBindViewHolder(FeedListRowHolder feedListRowHolder, int i) { 
    FeedItem feedItem = feedItemList.get(i); 

    Picasso.with(mContext).load(feedItem.getThumbnail()) 
      .error(R.drawable.list) 
      .placeholder(R.drawable.info) 
      .into(feedListRowHolder.thumbnail); 

} 

@Override 
public int getItemCount() { 
    return (null != feedItemList ? feedItemList.size() : 0); 
}} 

林需要编写代码

View.OnClickListener clickListener = new View.OnClickListener() { 
@Override 
public void onClick(View view) { 
    CustomViewHolder holder = (CustomViewHolder) view.getTag(); 
    int position = holder.getPosition(); 

    FeedItem feedItem = feedItemList.get(position); 
    Toast.makeText(mContext, feedItem.getTitle(), Toast.LENGTH_SHORT).show(); 
}}; 
+3

[RecyclerView的onClick](http://stackoverflow.com/questions/24471109/recyclerview-onclick) –

回答

0

这是你想要???

@Nullable 
private OnItemClickListener listener; 

public void setOnItemClickListener(OnItemClickListener listener) { 
    if (null != listener) { 
     this.listener = listener; 
    } 
} 

public interface OnItemClickListener { 
    void onClick(FeedItem feedItem, int position); 
} 



@Override 
public void onBindViewHolder(FeedListRowHolder feedListRowHolder, int i) { 
FeedItem feedItem = feedItemList.get(i); 

Picasso.with(mContext).load(feedItem.getThumbnail()) 
     .error(R.drawable.list) 
     .placeholder(R.drawable.info) 
     .into(feedListRowHolder.thumbnail); 
feedListRowHolder.itemView.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 

         if (listener != null) { 
          listener.onClick(item, position); 
         } 
        } 
       }); 


} 
+1

及其更好的可能的复制来添加onClickListener在onCreateViewHolder方法 –