Android recyclerview适配器匿名arraylist错误

Android recyclerview适配器匿名arraylist错误,android,android-adapter,android-recyclerview,Android,Android Adapter,Android Recyclerview,我有两个错误,你能帮我修复它们吗 这是主活动中的错误 这是密码 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_recycler_view); //first recycler mRecyclerView = (RecyclerVi

我有两个错误,你能帮我修复它们吗

这是主活动中的错误

这是密码

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_recycler_view);

        //first recycler

        mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
        mRecyclerView.setHasFixedSize(true);
        mRecyclerView.setLayoutManager(
                new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL, false));

        OkHttpHandler handler = new OkHttpHandler( this, new OkHttpHandler.MyInterface() {
            @Override
            public void myMethod(ArrayList result) {
                mAdapter = new MyAdapter(result,this);
                mAdapter.notifyDataSetChanged();
                mRecyclerView.setAdapter(mAdapter);

                // GridViewAdapter adapter = new GridViewAdapter(getApplicationContext(), R.layout.grid_item_layout, result);
                // adapter.notifyDataSetChanged();
                // mGridView.setAdapter(adapter);
            }
        });
第二个错误在我的适配器中

    //  viewHolder.txtHeader.setText(...)
    final Listitem item;

  //  final String name = mDataset.get(position);
    item = mDataset.get(position);
    viewHolder.txtHeader.setText(mDataset.get(position));
这是完整的代码

public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private ArrayList<Listitem> mDataset;
    Context mContext;
    public class ImageViewHolder extends RecyclerView.ViewHolder {
        //ImageView mImage;
        public TextView txtHeader;
        public TextView txtFooter;
        public ImageViewHolder(View itemView) {
            super (itemView);
            txtHeader = (TextView) itemView.findViewById(R.id.firstLine);
            txtFooter = (TextView) itemView.findViewById(R.id.secondLine);
        }
    }


    public void add(int position, Listitem item) { //changed from string to listitem

        mDataset.add(position, item);
        notifyItemInserted(position);
    }

    public void remove(String item) {
        int position = mDataset.indexOf(item);
        mDataset.remove(position);
        notifyItemRemoved(position);
    }

    // Provide a suitable constructor (depends on the kind of dataset)
    public MyAdapter(ArrayList<Listitem> myDataset, Context context) {

        mDataset = myDataset;
        mContext = context;

    }

    // Create new views (invoked by the layout manager)
    @Override
    public RecyclerView.ViewHolder  onCreateViewHolder(ViewGroup parent,
                                                       int viewType) {

            // create a new view
            View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.rowlayout, parent, false);
            // set the view's size, margins, paddings and layout parameters
            ImageViewHolder vh = new ImageViewHolder(v);
            return vh;
        }


    private static final int TYPE_IMAGE = 1;
    private static final int TYPE_GROUP = 2;

    @Override
    public int getItemViewType(int position) {
        // here your custom logic to choose the view type
        return position;
    }

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



                ImageViewHolder viewHolder = (ImageViewHolder) TextViewHolder;
                //  viewHolder.txtHeader.setText(...)
        final Listitem item;

      //  final String name = mDataset.get(position);
        item = mDataset.get(position);
        viewHolder.txtHeader.setText(mDataset.get(position));
              /*  viewHolder.txtFooter.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        remove(item);
                    }
                });*/

               // viewHolder.txtFooter.setText("Footer: " + mDataset.get(position));

        }


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

}
公共类MyAdapter扩展了RecyclerView.Adapter{ 私有ArrayList数据集; 语境; 公共类ImageViewHolder扩展了RecyclerView.ViewHolder{ //图像视图模拟图像; 公共文本视图txtHeader; 公共文本视图txtFooter; 公共图像视图持有者(视图项视图){ 超级(项目视图); txtHeader=(TextView)itemView.findViewById(R.id.firstLine); txtFooter=(TextView)itemView.findViewById(R.id.secondLine); } } public void add(int位置,Listitem项){//从字符串更改为Listitem mDataset.add(位置、项目); (位置); } 公共无效删除(字符串项){ int position=mDataset.indexOf(项目); mDataset.remove(位置); 已移除(位置)的项目; } //提供合适的构造函数(取决于数据集的类型) 公共MyAdapter(ArrayList myDataset,上下文){ mDataset=myDataset; mContext=上下文; } //创建新视图(由布局管理器调用) @凌驾 public RecyclerView.ViewHolder onCreateViewHolder(视图组父级, int视图类型){ //创建新视图 视图v=LayoutInflater.from(parent.getContext()).flate(R.layout.rowlayout,parent,false); //设置视图的大小、边距、填充和布局参数 ImageViewHolder vh=新的ImageViewHolder(v); 返回vh; } 私有静态最终整数类型_IMAGE=1; 私有静态最终int TYPE_GROUP=2; @凌驾 public int getItemViewType(int位置){ //这里是选择视图类型的自定义逻辑 返回位置; } //替换视图的内容(由布局管理器调用) @凌驾 BindViewHolder上的公共无效(RecyclerView.ViewHolder文本ViewHolder,int位置){ ImageViewHolder viewHolder=(ImageViewHolder)TextViewHolder; //viewHolder.txtHeader.setText(…) 最后清单项目; //最终字符串名称=mDataset.get(位置); item=mDataset.get(位置); viewHolder.txtHeader.setText(mDataset.get(position)); /*viewHolder.txtFooter.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图v){ 删除(项目); } });*/ //viewHolder.txtFooter.setText(“页脚:+mDataset.get(position)); } //返回数据集的大小(由布局管理器调用) @凌驾 public int getItemCount(){ 返回mDataset.size(); } } 列表项

public class Listitem implements Parcelable {
    String id;
    //String name;
    String url;

    Listitem (Parcel in){
        this.id = in.readString();
     //   this.name = in.readString();
        this.url = in.readString();
    }

    Listitem( String name,String url) {
        this.id = id;
        this.url = url;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getUrl() {
        return url;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getId() {
        return id;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(this.id);
       // dest.writeString(this.name);
        dest.writeString(this.url);

    }

    public static final Parcelable.Creator<Listitem> CREATOR = new Parcelable.Creator<Listitem>() {
        public Listitem createFromParcel(Parcel in) {
            return new Listitem(in);
        }

        public Listitem[] newArray(int size) {
            return new Listitem[size];
        }
    };
}
public类Listitem实现可包裹{
字符串id;
//字符串名;
字符串url;
Listitem(中的包裹){
this.id=in.readString();
//this.name=in.readString();
this.url=in.readString();
}
Listitem(字符串名称、字符串url){
this.id=id;
this.url=url;
}
@凌驾
公共int描述内容(){
返回0;
}
公共void setUrl(字符串url){
this.url=url;
}
公共字符串getUrl(){
返回url;
}
公共无效集合id(字符串id){
this.id=id;
}
公共字符串getId(){
返回id;
}
@凌驾
公共无效写入包裹(包裹目的地,内部标志){
dest.writeString(此.id);
//目的地记录(此名称);
dest.writeString(this.url);
}
public static final Parcelable.Creator=新建Parcelable.Creator(){
公共列表项createFromParcel(地块中){
返回新的列表项(在中);
}
公共列表项[]新数组(整数大小){
返回新的Listitem[大小];
}
};
}

对于第一个错误:

您需要在适配器构造函数中传递一个
上下文

实际上
这个
内部
myMethod(arraylistresult)
指的是
OkHttpHandler.MyInterface
而不是
上下文

要解决此问题,请更改
mAdapter=newmyadapter(结果为this)

to
mAdapter=newmyadapter(结果,YourActivityName.this)


对于第二个错误:

mDataset.get(position)
正在返回一个
Listitem
对象,而您需要一个
CharSequence
(或
String
)对象作为
setText()
方法的参数

你应该这样做

viewHolder.txtHeader.setText(mDataset.get(position.getUrl())


viewHolder.txtHeader.setText(mDataset.get(position.getId())

您需要在适配器构造函数中传递一个
上下文

实际上
这个
内部
myMethod(arraylistresult)
指的是
OkHttpHandler.MyInterface
而不是
上下文

要解决此问题,请更改
mAdapter=newmyadapter(结果为this)

to
mAdapter=newmyadapter(结果,YourActivityName.this)


对于第二个错误:

mDataset.get(position)
正在返回一个
Listitem
对象,而您需要一个
CharSequence
(或
String
)对象作为
setText()
方法的参数

你应该这样做

viewHolder.txtHeader.setText(mDataset.get(position.getUrl())

viewHolder.txtHeader.setText(mDataset.get(position.getId())

有什么问题