recyclerviewを使用しようとしている間、私は、ビューのホルダーにオブジェクト内のコンテンツを取得することはできません

ボタン:

私はrecyclerviewを使用しようとしていると私はアイテムのパラメータでviewholderの使用回数の「のsetText」メソッドを設計しようとしています。

問題は、私はのsetTextメソッドのアプリで「item.getNumberを()」を入れたときに仕事をしないということです。私はこの方法では、単に文字列を入れたときに問題がないと入れて、なぜ私は「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());
        }
    }
}

mainActivity:

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;
    }
}
P. I:

問題は、あなたのあるgetNumber()メソッドが返しますint

public int getNumber() {
    return number;
}

2つの異なるバージョンがありTextView.setText()、受け入れ1 Stringと受け入れ一つint受け付けバージョンint(のような文字列リソースIDを期待しているR.string.foo)、それはあなただけの数を表示しようとしていることを伝えることはできません。

あなたの変更setText()ではなく、このようになりますように電話を:

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

使用することにより"" + item.getNumber()、あなたはのバージョン呼び出していることを確認してくださいよsetText()、それは受け入れString、そしてそれはあなたが期待している番号を表示するために得ることを意味します。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=277510&siteId=1