Android的OnClickListener的RecyclerView的孩子的孩子 [英] Android OnClickListener for RecyclerView's Child's Child

查看:127
本文介绍了Android的OnClickListener的RecyclerView的孩子的孩子的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想要做的是设置一个onClickListener一个ImageView的是在一个recyclerview一个项目是什么。我只想上的ImageView点击做code A并单击其他任何地方运行code B.我怎么能这样做?我使用的:

What I want to do is set an onClickListener for an ImageView that is in an item in a recyclerview. I only want a click on that ImageView to do CODE A and click anywhere else to run CODE B. How can I do that? I am using:

public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.RecyclerViewHolder> {

LayoutInflater inflater;
Context context;

ClickListener clickListener;

List<PostContent> posts = Collections.emptyList();

public RecyclerAdapter(Context context) {
    this.context = context;
    inflater = LayoutInflater.from(context);
}

public void setPosts(List<PostContent> posts) {
    this.posts = posts;
}

@Override
public RecyclerViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
    View view = inflater.inflate(R.layout.post_row, viewGroup, false);
    RecyclerViewHolder viewHolder = new RecyclerViewHolder(view);
    return viewHolder;
}

@Override
public void onBindViewHolder(RecyclerViewHolder viewHolder, int i) {
    viewHolder.name.setText(posts.get(i).name);
    viewHolder.username.setText("@" + posts.get(i).username);
    viewHolder.time_post.setText(posts.get(i).time_post);
    viewHolder.content.setText(posts.get(i).content);
}

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

public void setClickListener(ClickListener clickListener) {
    this.clickListener = clickListener;
}

public interface ClickListener {
    public void ItemClicked(View view, int pos);
}

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

    TextView name;
    TextView username;
    TextView time_post;
    TextView content;
    ImageView profile;

    public RecyclerViewHolder(View itemView) {
        super(itemView);
        name = (TextView) itemView.findViewById(R.id.name);
        username = (TextView) itemView.findViewById(R.id.username);
        time_post = (TextView) itemView.findViewById(R.id.time);
        content = (TextView) itemView.findViewById(R.id.content);
        profile = (ImageView) itemView.findViewById(R.id.profile);

        itemView.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        if (clickListener != null) {
            clickListener.ItemClicked(v, getPosition());
        }
    }

}

} 我的适配器和观点持有者。

} for my adapter and view holder.

推荐答案

好了,所以这可能不是做了正确的方法,但是这是我得到了它的工作。

Okay so this might not be the correct way to do it, but this is how I got it to work.

首先,在你的ViewHolder创建一个点击式界面:

Firstly create a click interface in your ViewHolder:

private TaskListRecyclerviewClickInterface clickListener;

...

this.clickListener = clickListener;

...

public interface TaskListRecyclerviewClickInterface {
    public void onItemClicked(int position, String tag);
}

然后,一个onclicklistener添加到您想要的意见,并调用该接口时,这些项目被点击像这样:

Then add an onclicklistener to the views you want and call this interface when these items are clicked like so:

holder_view.setTag("holder");
holder_view.setOnClickListener(this);
imageView.setTag("ImageView");
imageView.setOnclickListener(this);

而onClickListener:

And the onClickListener :

@Override
public void onClick(View v) {
    if (clickListener != null) {
        clickListener.onItemClicked(getPosition(), v.getTag().toString());
    }
}

这是你的活动现在,通过这个接口适配器在构造函数中,然后将接口传递给这个viewholder像这样:

Now from your activity, pass this Interface to your Adapter in the constructor and then pass the interface to this viewholder like so:

public InboxTaskListAdapter(List<Items> items, InboxTasksViewHolder.TaskListRecyclerviewClickInterface clickListener) {
        this.items = items;
        this.clickListener = clickListener;
    }

在onCreateViewHolder你应该通过接口viewholder。

In onCreateViewHolder you should pass the interface to the viewholder.

现在在你的活动或片段只是实现这个监听器并覆盖onItemClicked方法。现在,您将获取视图位置,标签被点击。

Now in your Activity or fragment just implement this listener and override the onItemClicked method. You will now get the view position and tag that was clicked on.

这篇关于Android的OnClickListener的RecyclerView的孩子的孩子的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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