前提・実現したいこと
adapterという名前のアダプターを使ったアイテムの次にtodoadapterという名前のアダプターを使ったアイテムが追加されるようにしたいです。
発生している問題・エラーメッセージ
2番目のアダプターしか追加されません
該当のソースコード
Java
DBHelper_1 DBHelper1; ArrayList<User> userList; ListView listView; User user; @Override //他のアクティビティから戻る際にListViewを更新したいためonResumeに記述 protected void onResume() { super.onResume(); DBHelper1 = new DBHelper_1(this); userList = new ArrayList<>(); Cursor data = DBHelper1.getListContents(); //int numRows = data.getCount(); //TODO todoテスト変更2 int i=0; while(data.moveToNext()){ user = new com.example.adaptertest.User(data.getString(1),data.getString(2),data.getString(3)); userList.add(i,user); System.out.println(data.getString(3));//todoadapterで表示 System.out.println(data.getString(1)+" "+data.getString(2));//adapterで表示 System.out.println(userList.get(i).getTitleName()); i++; } com.example.adaptertest.TwoColumnAdapter adapter = new com.example.adaptertest.TwoColumnAdapter(this,R.layout.lv_adapter, userList); com.example.adaptertest.ToDoAdapter todoadapter = new com.example.adaptertest.ToDoAdapter(this,R.layout.todo_adapter, userList); listView = (ListView) findViewById(R.id.lv1); listView.setAdapter(adapter); listView.setAdapter(todoadapter);//このアダプターしか反映されない listView.setOnItemLongClickListener(new OnItemLongClickListener()); }
補足情報(FW/ツールのバージョンなど)
Gradleバージョン:7.0.2
一つの ListView には一つの adapter しか使えません。一つの ListView で複数種類のセルを使うには、自分でカスタム Adapter を (普通は BaseAdapter のサブクラスとして) 定義する必要があるでしょうね。
Listview以外で何か実現したいことを実現するための良い方法はありますでしょうか?
知識不足で申し訳ないです...
何を実現したいのかよく分かりませんが、要素数が少ないなら LinearLayout を使う方法もあるかと…。
RecyclerViewを使うのはどうですか?
もちろん RecyclerView でもできますが、adapter を書く手間は ListView でカスタム adapter を書く場合とあまり変わらないと思います。
RecyclerViewでは、複数のアダプターの追加はできるのですか?
RecyclerView でも adapter は一つです。上のコメントで「できる」と書いたのは、一つの adapter で複数の種類のセルを混在させることです。
まだ回答がついていません
会員登録して回答してみよう