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の記事を集めたマガジンも作成しているのでぜひ、そちらもご参照ください。
この記事が気に入ったらサポートをしてみませんか?