在尝试使用 recyclerview 时,我无法在视图持有者中获取对象中的内容

while trying to use recyclerview, I can't get content in object in view holder

我正在尝试使用 recyclerview 并且我正在尝试在 viewholder 中设计 'setText' 方法在项目参数中使用数字。

问题是,当我将 "item.getNumber()" 放入 setText 方法时,应用程序无法正常工作。我不知道为什么当我只在方法中放入字符串时没有问题,而在没有错误消息的情况下放入 "item.getNumber()" 有问题。

适配器:

public class adapter extends RecyclerView.Adapter<adapter.ViewHolder> {
    ArrayList<data> items=new ArrayList<data>();

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

    public void additem(data item){
        items.add(item);
    }

    @Override
    public void onBindViewHolder(@NonNull adapter.ViewHolder holder, int position) {
        data item=items.get(position);
        holder.setText(item);
    }

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

    static class ViewHolder extends RecyclerView.ViewHolder {
        TextView textView;
        EditText editText;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            textView = itemView.findViewById(R.id.textView);
            editText = itemView.findViewById(R.id.editText);
        }

        public void setText(data item) {
            textView.setText(item.getNumber());
            editText.setHint(item.getSentences());
        }
    }
}

主要活动:

public class MainActivity extends AppCompatActivity {
    static int num = 6;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        RecyclerView recyclerView = findViewById(R.id.recyclerview);
        adapter adapter1 = new adapter();
        for (int i = 0; i < num; i++) {
            adapter1.additem(new data("sentences", i + 1));
        }
        recyclerView.setAdapter(adapter1);
        LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
        recyclerView.setLayoutManager(layoutManager);
    }
}

data.java:

public class data {
    String sentences = null;
    int number;

    public int getNumber() {
        return number;
    }

    public void setNumber(int number) {
        this.number = number;
    }

    public data(String sentences, int number) {
        this.sentences = sentences;
        this.number = number;
    }

    public String getSentences() {
        return sentences;
    }

    public void setSentences(String sentences) {
        this.sentences = sentences;
    }
}

问题是你的getNumber()方法returnsint:

public int getNumber() {
    return number;
}

TextView.setText() 有两种不同的版本,一种接受 String,另一种接受 int。接受 int 的版本需要一个字符串资源 ID(如 R.string.foo),它无法判断您只是想显示一个数字。

更改您的 setText() 调用,使其看起来像这样:

    textView.setText("" + item.getNumber());

通过使用 "" + item.getNumber(),您将确保调用接受 StringsetText() 版本,这意味着您可以显示你期待的数字。