見出し画像

JavaでAndroidアプリ開発(ListViewの作成)

①画面にListViewを作成する

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   tools:context=".MainActivity">

   <ListView
       android:id="@+id/listview"
       android:layout_width="match_parent"
       android:layout_height="match_parent"/>

</androidx.constraintlayout.widget.ConstraintLayout>

基本は、idと幅と高さの3行の設定があれば、ListViewはOKです。

②リストを作成

MainActivity.java

package com.example.vib;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {


   String[] test = {
           "田村",
           "タムラ",
           "たむら"
   };

表示させたいリストを配列で作成しましょう。上記ではtestという配列に3種類の田村が入っています。

③adapterの設定

リストだけでは情報不足でリストを起動することはできません。

①どの画面に(this)

②どのような表示で(android.R.layout.simple_list_item_1)

③なんの情報(test)を

ということが必要になります。

その情報を1まとめにして、送信するためのadapterをインスタンス化します。

    @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);

       ArrayAdapter adapter = new ArrayAdapter(
               this,
               android.R.layout.simple_list_item_1,
               test
       );

④ListViewへadapterを送信して、画面に表示させる

((ListView)findViewById(R.id.listview)).setAdapter(adapter);

全体像

MainActivity.java

package com.example.vib;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {

   String[] test = {
           "田村",
           "タムラ",
           "たむら"
   };

   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);

       ArrayAdapter adapter = new ArrayAdapter(
               this,
               android.R.layout.simple_list_item_1,
               test
       );

       ((ListView)findViewById(R.id.listview)).setAdapter(adapter);
   }
}

キャプチャ

以上で簡単になりますが、Listの作成は完了となります。

その他(Listのクリック処理:Toastの表示)

Listをクリックした際の処理については、setOnItemClickListenerメソッドを使います。

((ListView)findViewById(R.id.listview)).setOnItemClickListener();

上記の()内にnew AdapterView.OnItemClickListner()を入力してください。予測変換で以下まで入力することができます。

((ListView)findViewById(R.id.listview)).setOnItemClickListener(
               new AdapterView.OnItemClickListener() {

                   @Override
                   public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                       //コメント部分(クリックした時に動作させたい処理を記載)
                       Toast.makeText(MainActivity.this, test[position], Toast.LENGTH_SHORT).show();

                   }
               }
       );

そして、上記のコメント部分にリストをクリックした時に動作させたい処理内容を記載すればOKです。上記ではToastを表示させています。Toastについては以下の記事に書いているのでぜひご参照ください。

キャプチャ


その他(Listのクリック処理:画面遷移とデータ転送)

リストがクリックされれば、画面が遷移して、遷移後の画面にクリックしたタイトルが表示されるような形

MainActivity.java

        ((ListView)findViewById(R.id.listview)).setOnItemClickListener(
               new AdapterView.OnItemClickListener() {
                   @Override
                   public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                       Intent intent = new Intent(getApplication(), SubActivity.class);
                       intent.putExtra("testText", test[position]);
                       startActivity(intent);
                   }
               }
       );

IntentでSubActivityへ遷移した後にputExtraメソッドでデータを渡します。

activity_sub.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   tools:context=".SubActivity">

   <TextView
       android:id="@+id/text"
       android:text="ここへ入力"
       android:textSize="60dp"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"/>

</androidx.constraintlayout.widget.ConstraintLayout>

テキストビューを適当に作成

キャプチャ

SubActivity.java

package com.example.vib;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class SubActivity extends AppCompatActivity {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_sub);

       Intent intent = getIntent();
       String name = intent.getStringExtra( "testText" );
       ((TextView)findViewById(R.id.text)).setText(name);
   }
}

キャプチャ

intentについては以下の記事も使用しているのでぜひご参照ください。

また、Javaの記事を集めたマガジンも作成しているのでぜひ、そちらもご参照ください。


この記事が気に入ったらサポートをしてみませんか?