在Recyclerview的Adapter中添加变量后,在主活动不能调用,请问这是什么原因?怎么查都查不到,心态崩了
/**
     * 添加新的Item
     */
    public void addNewItem() {
        if(mData == null) {
            mData = new ArrayList<>();
        }
        mData.add(0, "new Item");
        notifyItemInserted(0);
    }    /**
     * 删除Item
     */
    public void deleteItem() {
        if(mData == null || mData.isEmpty()) {
            return;
        }
        mData.remove(0);
        notifyItemRemoved(0);
    }
   public void setOnItemClickListener(MyAdapter.OnItemClickListener listener) {
        this.onItemClickListener = listener;
    }这几个变量在主活动中就是错误的,无法调用
譬如mAdapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() {…}错误: 找不到符号
符号:   方法 setOnItemClickListener(<匿名OnItemClickListener>)
位置: 类型为Adapter的变量 mAdaptermAdapter.addNewItem();
错误: 找不到符号
符号:   方法 addNewItem()
位置: 类型为Adapter的变量 mAdapter步骤都是一步步照着https://www.jianshu.com/p/4fc6164e4709来的

解决方案 »

  1.   

    我这里没问题啊import android.support.v7.widget.RecyclerView;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.TextView;import com.md.demo.R;import java.util.ArrayList;/**
     * This implementation of {@link RecyclerView.Adapter}
     *
     * Created by KyoWang on 2016/06/30 .
     */
    public class MDRvAdapter extends RecyclerView.Adapter<MDRvAdapter.ViewHolder>{    /**
         * 展示数据
         */
        private ArrayList<String> mData;    /**
         * 事件回调监听
         */
        private MDRvAdapter.OnItemClickListener onItemClickListener;    public MDRvAdapter(ArrayList<String> data) {
            this.mData = data;
        }    public void updateData(ArrayList<String> data) {
            this.mData = data;
            notifyDataSetChanged();
        }    /**
         * 添加新的Item
         */
        public void addNewItem() {
            if(mData == null) {
                mData = new ArrayList<>();
            }
            mData.add(0, "new Item");
            notifyItemInserted(0);
        }    /**
         * 删除Item
         */
        public void deleteItem() {
            if(mData == null || mData.isEmpty()) {
                return;
            }
            mData.remove(0);
            notifyItemRemoved(0);
        }    /**
         * 设置回调监听
         *
         * @param listener
         */
        public void setOnItemClickListener(MDRvAdapter.OnItemClickListener listener) {
            this.onItemClickListener = listener;
        }    @Override
        public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            // 实例化展示的view
            View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_rv_item, parent, false);
            // 实例化viewholder
            ViewHolder viewHolder = new ViewHolder(v);
            return viewHolder;
        }    @Override
        public void onBindViewHolder(final ViewHolder holder, int position) {
            // 绑定数据
            holder.mTv.setText(mData.get(position));        holder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(final View v) {
                    if(onItemClickListener != null) {
                        int pos = holder.getLayoutPosition();
                        onItemClickListener.onItemClick(holder.itemView, pos);
                    }
                }
            });        holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    if(onItemClickListener != null) {
                        int pos = holder.getLayoutPosition();
                        onItemClickListener.onItemLongClick(holder.itemView, pos);
                    }
                    //表示此事件已经消费,不会触发单击事件
                    return true;
                }
            });
        }    @Override
        public int getItemCount() {
            return mData == null ? 0 : mData.size();
        }    public static class ViewHolder extends RecyclerView.ViewHolder {        TextView mTv;        public ViewHolder(View itemView) {
                super(itemView);
                mTv = (TextView) itemView.findViewById(R.id.item_tv);
            }
        }    public interface OnItemClickListener {
            void onItemClick(View view, int position);
            void onItemLongClick(View view, int position);
        }
    }
      

  2.   

    你的 MDRvAdapter 有没有初始化啊?比如:mAdapter = MDRvAdapter(...)