处理recyclerview内部项目的点击次数

时间:2015-09-10 12:41:38

标签: android onclicklistener android-recyclerview ontouchlistener

我有一个recyclerview,可以通过评论按钮向facebook显示新闻源。我无法弄清楚当用户点击评论按钮时如何显示对话框。我在这里找到的所有解决方案都是处理整个项目的点击而不是内部视图。我也试过这个灵魂。 How to handle multiple layout clicks in recyclerView in Android

这是我的适配器类。

public class NewsfeedAdapter extends RecyclerView.Adapter<NewsfeedAdapter.NewsfeedViewHolder> {

private final LayoutInflater inflater;
private Context context;

ArrayList<NewsfeedItem> data=  new ArrayList<NewsfeedItem>();

public NewsfeedAdapter(Context context,ArrayList<NewsfeedItem> data){
    inflater= LayoutInflater.from(context);
    this.data=data;
    this.context = context;
}
@Override
public NewsfeedViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = inflater.inflate(R.layout.custom_newsfeed_row, parent, false);
    NewsfeedViewHolder holder = new NewsfeedViewHolder(view);
    return holder;
}

@Override
public void onBindViewHolder(NewsfeedViewHolder newsfeedViewHolder, int i) {
    NewsfeedItem current = data.get(i);
    newsfeedViewHolder.username.setText(current.username);
    newsfeedViewHolder.icon.setImageResource(current.iconid);
    newsfeedViewHolder.timestamp.setText((CharSequence) current.timestamp);
    newsfeedViewHolder.news.setText(current.news);
}


@Override
public int getItemCount()
{
    return data.size();
}


class NewsfeedViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

    TextView news, username, timestamp, comment_btn, like_btn;
    ImageView icon;
    private NewsfeedClickInterface clickListener;

    public NewsfeedViewHolder(View itemView) {
        super(itemView);
        news = (TextView) itemView.findViewById(R.id.news);
        timestamp = (TextView) itemView.findViewById(R.id.timestamp);
        username = (TextView) itemView.findViewById(R.id.username);
        icon = (ImageView) itemView.findViewById(R.id.profile_img);
        comment_btn = (TextView) itemView.findViewById(R.id.comment_btn);
        comment_btn.setTag("comment");
        comment_btn.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        if (clickListener != null) {
            clickListener.onItemClicked(getPosition(), v.getTag().toString());
        }
    }
}
public interface NewsfeedClickInterface {
    public void onItemClicked(int position, String tag);
}

}

1 个答案:

答案 0 :(得分:0)

您可以检查视图的ID,并根据单击的视图触发不同的单击侦听器。 喜欢

comment_btn.setOnClickListener(this);
anotherButton.setOnClickListener(this);

switch (v.getId())

case R.id.comment_btn:
        code goes here

case R.id.another_button:

希望这会有所帮助。