android - RecyclerView onClickListener

标签 android android-recyclerview onclicklistener

<分区>

因此,在进行了 5 个月的网络开发之后,我需要重新使用 android,但我注意到我的一些旧代码不再起作用了。我有一个带有数据适配器的 RecyclerView,但项目的 onClickListener 没有响应任何内容。这是我的代码的样子:

public class ProjectAdapter extends RecyclerView.Adapter<ProjectAdapter.ViewHolder> {
    private List<Project> itemsData;

    OnItemClickListener mItemClickListener;

    public ProjectAdapter(List<Project> itemsData) {
        this.itemsData = itemsData;
    }

    // Create new views (invoked by the layout manager)
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent,
                                                   int viewType) {
        // create a new views
        View itemLayoutView = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.item_layout, parent, false);

        // create ViewHolder
        ViewHolder vh = new ViewHolder(itemLayoutView);
        return vh;
    }

    // Replace the contents of a view (invoked by the layout manager)
    @Override
    public void onBindViewHolder(ViewHolder viewHolder, int position) {


        viewHolder.txtViewId.setText(String.valueOf(itemsData.get(position).getId()));
        viewHolder.txtViewName.setText(itemsData.get(position).getName());


    }

    // inner class to hold a reference to each item of RecyclerView
    public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{

        public TextView txtViewName, txtViewId;

        public ViewHolder(View itemLayoutView) {
            super(itemLayoutView);
            txtViewName = (TextView) itemLayoutView.findViewById(R.id.item_name);
            txtViewId = (TextView) itemLayoutView.findViewById(R.id.item_id);

        }

        @Override
        public void onClick(View v) {
            System.out.println("onClick");
            TextView tv = (TextView) v.findViewById(R.id.item_name);
            String id = tv.getText().toString();
            mItemClickListener.onItemClick(v, getAdapterPosition(), id); //OnItemClickListener mItemClickListener;
        }
    }

    public interface OnItemClickListener {
        public void onItemClick(View view, int position, String id);
    }

    public void SetOnItemClickListener(final OnItemClickListener mItemClickListener) {
        this.mItemClickListener = mItemClickListener;
    }

    // Return the size of your itemsData (invoked by the layout manager)
    @Override
    public int getItemCount() {
        return itemsData.size();
    }
}

ProjectsActivity.java

projectAdapter.SetOnItemClickListener(new ProjectAdapter.OnItemClickListener() {
    @Override
    public void onItemClick(View v, int position, String id) {
        System.out.println("onItemClick" + id);
        ActionActivity(id);
    }
});

显示了列表,点击不起作用,甚至控制台的日志也没有。 有人知道我做错了什么吗?我使用 SDK v23 作为编译 sdk 版本。我的最低 SDK 版本是 v19。

最佳答案

找到View后添加一个点击是这样的:

public ViewHolder(View itemLayoutView) {
            super(itemLayoutView);
            txtViewName = (TextView) itemLayoutView.findViewById(R.id.item_name);
            txtViewId = (TextView) itemLayoutView.findViewById(R.id.item_id);
           // here 
           itemLayoutView.setOnClickListener(this);
        }

关于android - RecyclerView onClickListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38179023/

相关文章:

android - Proguard 混淆整个包但仅一个文件

android - kotlin.UninitializedPropertyAccessException : lateinit property roomClickedInterface has not been initialized

javascript - map API 标记组的可见 true/false

java - 特定的 webview 不会在 Android 的布局中加载

android - SeekBar 和 ListView 回收问题

android - Scrollview 内 Recyclerview 的平滑水平滚动

java - 我正在尝试创建一个点击监听器,一旦点击它就会打开一个新 Activity

android - TextView 及其 ListView 的 capitalize 属性是否存在任何依赖关系

android - 动态表格布局上的 OnClickListener

android - 使用传感器时应该在哪里使用 onPause 和 onDestroy?