【问题标题】:ListView.getItemAtPosition(i) equivalent in RecyclerView?RecyclerView 中的 ListView.getItemAtPosition(i) 等价物?
【发布时间】:2015-03-17 18:36:50
【问题描述】:

我正在从由 CursorAdapter 支持的 ListView 迁移到由 shywim 的 CursorRecyclerAdapter 支持的 RecyclerView。

我在迁移这个用于返回光标对象的部分时遇到了问题:

(MyCursor)mListView.getItemAtPosition(i)

如何访问 RecyclerView 中特定位置的光标?谢谢。

【问题讨论】:

    标签: android android-listview android-cursoradapter android-recyclerview


    【解决方案1】:

    不幸的是,它不是 RecyclerView 的一部分。为了克服它,我定义了一个接口:

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

    ViewHolder 实现了 View.OnClickListener,它的构造函数接受了一个实现了我的 OnItemClickListener 接口的对象:

     public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
    
        private OnItemClickListener mListener;
    
        public ViewHolder(View itemView) {
            super(itemView);
            itemView.setOnClickListener(this);
    
        }
    
         public ViewHolder(View itemView, OnItemClickListener listener) {
            this(itemView);
            mListener = listener;
        }
    
    
        @Override
        public void onClick(View v) {
            if (mListener != null) {
                mListener.onItemClick(v, getPosition());
            }
        }
    

    当您单击该行时,我通过侦听器转发单击的视图及其位置

    【讨论】:

    • 如果您的 List 位置 == 您的点击位置,您可以在该位置返回模型。
    • 是的,当然。。一旦你有了位置,你就可以通过适配器访问模型
    • 我用过类似的解决方案,我只是说。您的解决方案更好,因为它可以处理所有情况。
    • 这里只说明如何获取持有人的位置,不解释如何获取该位置的光标数据。
    • 数据由适配器保存。问它
    猜你喜欢
    • 2021-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-27
    • 1970-01-01
    • 2020-07-01
    • 1970-01-01
    相关资源
    最近更新 更多