【问题标题】:Cannot resolve symbol 'get' in Android Studio in Recyclerview无法在 Recyclerview 的 Android Studio 中解析符号“get”
【发布时间】:2017-09-13 08:51:02
【问题描述】:

onBindViewHolder 中出现错误

'无法解析符号'get'

尽管我在 Listitem 类中创建了公共字符串,但 getHeadgetDesc 也不起作用。

我的 android studio 版本是 2.3.3,
API 级别为 22 android 5.1,
构建工具版本为 25.0.3。

package com.example.kanase.recyclerviewapp;  

import android.content.Context;   
import android.support.v7.widget.RecyclerView;   
import android.view.LayoutInflater;  
import android.view.View;  
import android.view.ViewGroup;  
import android.widget.TextView;  

import java.util.List;

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {

private List<Listitem> listItems;
private Context context;

public MyAdapter(List<Listitem> listItems, Context context) {
    this.listItems = listItems;
    this.context = context;
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View v = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.list_item , parent ,false );
    return new ViewHolder(v);
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {

    Listitem listitem =new listItems.get(position);
    holder.textViewHead.setText(listItems.getHead());
    holder.textViewDesc.setText(listItems.getDesc());
}

@Override
public int getItemCount() {
    return listItems.size();
}

public class ViewHolder extends RecyclerView.ViewHolder{
    public TextView textViewHead;
    public TextView textViewDesc;

    public ViewHolder(View itemView) {
        super(itemView);

        textViewHead =(TextView) itemView.findViewById(R.id.textViewHead);
        textViewDesc =(TextView) itemView.findViewById(R.id.textViewDesc);
    }
}

这是 Listitem 类:

package com.example.kanase.recyclerviewapp;

public class Listitem {
    private String head;
    private String desc;

    public Listitem(String head, String desc) {
        this.head = head;
        this.desc = desc;
    }

    public String getHead() {
        return head;
    }

    public String getDesc() {
        return desc;
    }
}

【问题讨论】:

  • new listItems.get 为什么是newlistItems.getHead() 为什么要从您的 listItems 中添加 getHead

标签: java android listview android-recyclerview


【解决方案1】:

与 android studio 版本或 api 级别或构建工具版本无关。 您在列表本身上调用 getter,而不是在列表中的单个项目上。而Listitem listitem =new listItems.get(position); 你不必使用new 关键字从列表中获取项目

 @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        Listitem listitem =new listItems.get(position);
        holder.textViewHead.setText(listItems.getHead());
        holder.textViewDesc.setText(listItems.getDesc());

    }

onBindViewHolder 更改为,

@Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        Listitem listitem = listItems.get(position);
        holder.textViewHead.setText(listitem.getHead());
        holder.textViewDesc.setText(listitem.getDesc());

    }

【讨论】:

    【解决方案2】:

    尝试改变

     Listitem listitem =new listItems.get(position);
    holder.textViewHead.setText(listItems.getHead());
    holder.textViewDesc.setText(listItems.getDesc());
    

    holder.textViewHead.setText(listItems.get(position).getHead());
    holder.textViewDesc.setText(listItems.get(position).getDesc());
    

    【讨论】:

      【解决方案3】:
      Listitem listitem =new listItems.get(position);
      

      删除new

      holder.textViewHead.setText(listItems.getHead());
      holder.textViewDesc.setText(listItems.getDesc());
      

      这看起来像是一个错字。使用listItem 而不是listItems

      【讨论】:

        【解决方案4】:

        你可以改变你的对象

        Listitem listitem = listItems.get(position);
        holder.textViewHead.setText(listitem.getHead());
        holder.textViewDesc.setText(listitem.getDesc());
        

        【讨论】:

          猜你喜欢
          • 2019-07-29
          • 1970-01-01
          • 1970-01-01
          • 2018-05-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-05-14
          相关资源
          最近更新 更多