SimpleAdapterを使って表現
※ここから先はListViewを配置している前提で進めます。
MainActivity.javaへ記述する
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_main);
/*
+++ここに記載+++
*/
}
記述内容
//レイアウトに配置したリストビューの取得
ListView listView = findViewById(R.id.ListView);
//マップ型のリスト作成
List<Map<String,String>> menulist = new ArrayList<>();
//ここへリスト用のデータを記載する
//SimpleAdapter用の配列
String[] form = {"name","price"};
int[] to = {android.R.id.text1,android.R.id.text2};
//第5引数まである
SimpleAdapter adapter = new SimpleAdapter(
MainActivity.this,
menulist,
android.R.layout.simple_list_item_2,
form,
to
);
//反映させる
listView.setAdapter(adapter);
Mapのリストを作る
List<Map<String,String>> menulist = new ArrayList<>();
作ったリストへMapを追加していく
//ここへリスト用のデータを記載する の所へ追記
今回はキーを二つ用意する
name:商品名
price:その値段
追加
//りんごの情報を保持したMapをリストへ
Map map = new HashMap<>();
map.put("name","りんご")
map.put("price","200円")
menulist.add(map);
//なしの情報を保持したMapをリストへ
map = new HashMap<>();//使いまわし
map.put("name","なし")
map.put("price","300円")
menulist.add(map);
//同じように追加したいものを次々と入れていく
String[ ]とint[ ]について
//SimpleAdapter用の配列
String[] form = {"name","price"};
int[] to = {android.R.id.text1,android.R.id.text2};
String[] form = {"name","price"};はMap用
int[] to = {android.R.id.text1,android.R.id.text2};は後で
SimpleAdapter
//第5引数まである
SimpleAdapter adapter = new SimpleAdapter(
MainActivity.this,
menulist,
android.R.layout.simple_list_item_2,
form,
to
);
引数
-
第1、MainActivity.this,
Contextを指定します。
アプリケーションやアクティビティに関する情報を
保持するオブジェクトです。
ってChatGPTが言ってました。
自分にはまだ分かりません・・・ -
第2、作ったMapのリスト
-
第3、android.R.layout.simple_list_item_2,
xmlファイルを指定します。
今回はAndroidが提供する標準レイアウトで、
2つのTextViewを含むレイアウトが定義されています。
simple_list_item_2.xmlの中身(簡略化した例)
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/text2"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
こういうカスタマイズ済みのxmlがあり
そのファイルを指定している認識でOK
-
第4、String[ ]
String[ ] form = {"name","price"};
これの変数であるformを入れる -
第5、int[ ]
int[ ] to = {android.R.id.text1,android.R.id.text2};
これの変数であるtoを入れる
第3引数のxml内のTextViewの@+idを指定してます。