選択したアイテムの文字列を取得しテキストビューに反映させる
テキストビューとリストを配置する
参考資料 → リストの作成
それぞれに+@idの設定を行う
今回は下記で設定している
ListView → android:id="@+id/testList"
TextView → android:id="@+id/testText"
選択時の処理を記述する
MainActivity.javaへ追記する
MainActivity.java追加後
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//++++追加+++++
private class ListClickTest implements AdapterView.OnItemClickListener{
@Override
public void onItemClick(AdapterView<?> parent,View view,int position,long notInUse){
String item = (String)parent.getItemAtPosition(position);
item = "選んだアイテム = "+item;
TextView textview = findViewById(R.id.testText);
textview.setText(item);
}
}
//+++++++++++
}
}
クラスとメソッド
クラス
private class クラス名 implements AdapterView.OnItemClickListener
メソッド
@Override
public void onItemClick(AdapterView<?> parent,View view,int position,long notInUse)
-
引数1:AdapterView<?> 今回の変数名はparent
リスト全体の事だと思っていればOK
<?>は型の具体的な指定をしませんみたいな意味
これ以外だとエラーが出るのでとりあえず?を入れとけばよい -
引数2:View 今回の変数名はview
タップされたアイテムの1行分の情報、今回は使わない -
引数3:int 今回の変数名はposition
リストのタップされた行の番号
上から順番に0、1、2…と番号がふられる
あいうえお → 0
かきくけこ → 1… -
引数4:long 今回の変数名はnotInUse
データベースとかで使う、今回は使わない
onItemClick()内の処理
String item = (String)parent.getItemAtPosition(position);
item = "選んだアイテム = "+item;
TextView textview = findViewById(R.id.testText);
textview.setText(item);
String item = (String)parent.getItemAtPosition(position); |
---|
リストでタップした場所の番号(position)にある アイテムの文字列を取得 "あいうえお"をタップした場合は0がpositionに入り、 リスト内の番号0に対応するのが"あいうえお"となり String型の変数 item には"あいうえお"が入る |
TextView textview = findViewById(R.id.testText); textview.setText(item); |
---|
テキストビューを取得しテキスト表示の更新 |
リストのタップ検知
MainActivity.javaへ追記する
MainActivity.java追加後
public class MainActivity extends AppCompatActivity {
Toast toast;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//+++++追加++++++++
ListView listview = findViewById(R.id.testList);
listview.setOnItemClickListener(new ListClickTest());
//+++++++++++++++
}
private class ListClickTest implements AdapterView.OnItemClickListener{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long notInUse){
String item = (String)parent.getItemAtPosition(position);
item = "選んだアイテム = "+item;
TextView textview = findViewById(R.id.testText);
textview.setText(item);
}
}
}
追加した内容
ListView listview = findViewById(R.id.testList); listview.setOnItemClickListener(new ListClickTest()); |
---|
リストを取得後にそのリストのタップ時の処理を行う listview.setOnItemClickListener(); この( )内の引数にさっき作ったクラスのインスタンスを渡し そのクラスのonItemClick()内の処理を行う |
これで
- リストのタップ
- そのリストのアイテムの文字列を取得
- 文字をテキストビューへ反映
ができるようになる