0
  • 2
    最佳答案

    解决了,onBindViewHolder内使用holder.setData(mData.get(position), position);

    public class ListViewAdapter extends RecyclerView.Adapter<ListViewAdapter.InnerHolder> {
    
        private        List<ItemBean_List> mData;
        private static OnItemClickListener mOnItemClickListener;
    
        void setData(List<ItemBean_List> data) {
            mData = data;
        }
    
        @NonNull
        @Override
        public InnerHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            //创建条目的回调函数
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_recyclerview, parent, false);
            return new InnerHolder(view);
        }
    
        @Override
        public void onBindViewHolder(@NonNull InnerHolder holder, int position) {
            //绑定数据
            holder.setData(mData.get(position), position);
        }
    
        @Override
        public int getItemCount() {
            //设置条目数量
            if (mData != null) {
                return mData.size();
            }
            return 0;
        }
    
        static class InnerHolder extends RecyclerView.ViewHolder {
            @SuppressLint("StaticFieldLeak")
            static TextView textView1, textView2, textView3, textView4, textView5, textView6;
            int mPosition;
    
            InnerHolder(@NonNull View itemView) {
                super(itemView);
                textView1 = itemView.findViewById(R.id.textView1);
                textView2 = itemView.findViewById(R.id.textView2);
                textView3 = itemView.findViewById(R.id.textView3);
                textView4 = itemView.findViewById(R.id.textView4);
                textView5 = itemView.findViewById(R.id.textView5);
                textView6 = itemView.findViewById(R.id.textView6);
                itemView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        mOnItemClickListener.onClick(mPosition, v);
                    }
                });
            }
    
            void setData(ItemBean_List itemBean, int position) {
                textView1.setText(itemBean.getId());
                textView2.setText(itemBean.getProductModel());
                textView3.setText(itemBean.getPlanNum());
                textView4.setText(itemBean.getCompletNum());
                textView5.setText(itemBean.getCompletRate());
                textView6.setText(itemBean.getState());
                mPosition = position;
            }
    
        }
    
        void setItemClickListener(OnItemClickListener listener) {
            mOnItemClickListener = listener;
        }
    
        //创建一个接口
        public interface OnItemClickListener {
            void onClick(int position, View v);
        }
    }
    
    
    1182186833577086976  评论   打赏     痞子小小崔
    • 0

      你搞错了吧????


      androidx的recyclerview中ViewHolder变为静态了


      本来就是静态的呀


       public abstract static class ViewHolder


      是一个内部类,必须要静态呀。不静态你外面怎么继承它创建对象呢?


      你继承自即可,你的不需要写成静态。然后new出来就行了。



      1153952789488054272  评论   打赏     拉大锯
      • 痞子小小崔  回复 @拉大锯
        androidx版本会有提示修改为static,我看成报错了,以为InnerHolder必须static
        痞子小小崔 2020-05-23 15:27   回复 1182186833577086976
      • 痞子小小崔  回复 @拉大锯
        所以,趁手你再做一个问题可删除的功能吧,还有评论或回答的删除按钮吧(狗头)
        痞子小小崔 2020-05-23 15:29   回复 1182186833577086976
      • 拉大锯  回复 @痞子小小崔
        问题不可以删除,这个本来就有的。我关闭了。所提的问题是不可以删除的。
        拉大锯 2020-05-23 15:34   回复 1153952789488054272
    • 1

      1182186833577086976  评论   打赏     痞子小小崔