0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AndroidStudio リスト アイテムの選択

Last updated at Posted at 2024-12-09

選択したアイテムの文字列を取得しテキストビューに反映させる

イメージ

携帯.gif

テキストビューとリストを配置する
参考資料 → リストの作成

それぞれに+@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()内の処理を行う

これで

  1. リストのタップ
  2. そのリストのアイテムの文字列を取得
  3. 文字をテキストビューへ反映

ができるようになる

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?