简体   繁体   English

视图对象不可点击-使用OnClickListener

[英]View object not clickable - using OnClickListener

I created a basic Class called ListItem, which just stores two Strings and an integer. 我创建了一个名为ListItem的基本类,该类仅存储两个String和一个整数。

This is my container for items that sit in a RecyclerView. 这是我存放在RecyclerView中的物品的容器。

I tried to make ListItems clickable, so I made the ListItem extend the View class. 我试图使ListItems可单击,所以我使ListItem扩展了View类。 And then added an OnClickListener and set it. 然后添加一个OnClickListener并进行设置。 It hasn't worked. 它没有用。 I tested by creating a short message using TOAST but nothing displays. 我通过使用TOAST创建一条短消息进行了测试,但未显示任何内容。 Does anyone have any idea why? 有谁知道为什么吗?

ListItem class: ListItem类:

  public ListItem(String title, String date, int url, Context context, AttributeSet attrs){
    super(context, attrs);
    this.title = title;
    this.date = date;
    this.url = url;
}

...class where ListItems are created..... ...创建ListItems的类.....

    private AttributeSet attrs;


  ListItem y = new ListItem(title, date, a, this.getContext(), attrs);


    View.OnClickListener mFan = new View.OnClickListener()
    {

        public void onClick(View v)
        {
            Toast.makeText(getActivity(), "TEST" , Toast.LENGTH_SHORT).show();

        }

    };

    y.setOnClickListener(mFan);

There is a method for this in the View class. View类中有一个用于此的方法。

y.setClickable(true);

You may also need to do this for the ListView as well. 您可能还需要对ListView执行此操作。

myListView.setClickable(true); myListView.setClickable(真);

Implementing item click listener in RecyclerView is a bit different. 在RecyclerView中实现项目单击侦听器有点不同。

I assume you have implemented your own custom RecyclerViewAdpater which should be like this. 我假设您已经实现了自己的自定义RecyclerViewAdpater,应该像这样。 You have to implement your own OnClickListener interface inside it. 您必须在其中实现自己的OnClickListener接口。

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

    private List<ListItem> listItems;

    private static OnListItemClickListener onListItemClickListener;

    public interface OnListItemClickListener {

        public void onListItemClick(int position, View v);

    }

    public void setOnListItemClickListener(OnListItemClickListener onListItemClickListener) {

        this.onListItemClickListener = onListItemClickListener;

    }

    // You implement OnClickListener in your list item view holder.
    public static class ListItemViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

        public ListItemViewHolder(View listItemView) {

            super(listItemView);

            listItemView.setOnClickListener(this);

        }

        @Override
        public void onClick(View view) {

            onListItemClickListener.onListItemClick(getAdapterPosition(), view);

        }

    }

}

Then in your main activity or fragment you would do something like this. 然后,在您的主要活动或片段中,您将执行以下操作。

recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));

CustomRecyclerViewAdapter customRecyclerViewAdapter = new CustomRecyclerViewAdapter(listItems);

recyclerView.setAdapter(customRecyclerViewAdapter);

customRecyclerViewAdapter.setOnListItemClickListener(new CustomRecyclerViewAdapter.OnListItemClickListener() {

    @Override
    public void onListItemClick(int position, View v) {

        Toast.makeText(getActivity(), "TEST" , Toast.LENGTH_SHORT).show();

    }

});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 通过 View.OnClickListener() 传递 MainActivity 的对象 - Passing an object of MainActivity through View.OnClickListener() 获取 Android 的当前 onClickListener 查看 object - Get current onClickListener of an Android View object 实现View.onClickListener空对象参考的意图 - Intents on implements View.onClickListener null object reference onClickListener不适用于名片视图 - onClickListener not working for card view 在OnClickListener中检索视图 - Retrieve view in OnClickListener 图片查看和onClickListener问题 - Issue with Image View and onClickListener 新的OnClickListener()与新的View.OnClickListener() - new OnClickListener() vs new View.OnClickListener() 尝试在空对象引用上调用虚拟方法 &#39;Button.setOnClickListener(android.view.View$OnClickListener)&#39; - Attempt to invoke virtual method 'Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference 错误 - 尝试在空对象引用上调用虚拟方法___________setOnClickListener(android.view.View$OnClickListener)&#39; - Error- Attempt to invoke Virtual Method___________setOnClickListener(android.view.View$OnClickListener)' on a null object reference Android错误:尝试在空对象引用上调用虚拟方法……setOnClickListener(android.view.View $ OnClickListener)&#39; - Android Error: Attempt to invoke virtual… setOnClickListener(android.view.View$OnClickListener)' on a null object reference
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM