前のバージョンはこちらになりますが、世の中に腐るほどある getView 内の記述を外に出しただけのものでした。しかし、よくよく考えてみると、Adapter 内で セットされているデータを取り出して、そのクラスで引数に渡したらもっと楽だし、View のセットなんかも、Adapter 内ですればいい事に気が付きました。 これで、いろんなテストを気楽に出来る人が増えると思うわけです。 TestArrayAdapter
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
public class TestArrayAdapter<T> extends ArrayAdapter<T> {
public interface OnGetViewListener<T> {
abstract public void onGetViewListener(int position, View convertView, ViewGroup parent, T item);
}
private OnGetViewListener listener = null;
private int resource;
private LayoutInflater inflater;
public TestArrayAdapter(Context context, int resource, OnGetViewListener listener) {
super(context, resource);
this.listener = listener;
this.resource = resource;
this.inflater = (LayoutInflater)context.getSystemService
(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if ( listener != null ) {
if (convertView == null) {
convertView = inflater.inflate(resource, null);
}
T item = this.getItem(position);
listener.onGetViewListener(position, convertView, parent, item);
return convertView;
}
return super.getView(position, convertView, parent);
}
}
呼び出し側は、正式には以下のようにインターフェイスにも<WebData> を指定する事で引数の値を WebData として取得できます。しかし、面倒な場合は <WebData> を指定せずに引数を Object でもらってキャストして使えばいいはずです。
// *******************************
// ListView で一覧
// *******************************
listView = (ListView) MainControl.this.findViewById(R.id.listView);
arrayAdapter = new TestArrayAdapter<WebData>(MainControl.this, R.layout.item, new TestArrayAdapter.OnGetViewListener<WebData>() {
@Override
public void onGetViewListener(int position, View convertView, ViewGroup parent, WebData item) {
TextView textView;
textView = convertView.findViewById(R.id.textCode);
textView.setText(item.社員コード);
textView = convertView.findViewById(R.id.textName);
textView.setText(item.氏名);
textView = convertView.findViewById(R.id.textType);
textView.setText(item.所属名);
}
});
listView.setAdapter(arrayAdapter);
画面
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textCode"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20sp"/>
<TextView
android:id="@+id/textName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@android:color/black"
android:textSize="23sp"/>
<TextView
android:id="@+id/textType"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="6dp"
android:textSize="18sp"/>
</LinearLayout>
WebData
public class WebData {
String 社員コード;
String 氏名;
String フリガナ;
String 所属;
String 性別;
int 給与;
String 手当;
String 管理者;
String 生年月日;
String 生年月日2;
String 所属名;
@Override
public String toString() {
return 氏名;
}
}
WebData は 『Java : Class 構造より、update 文を作成する』でも使用しています
タグ:android
|
|
【2017 Android Studioの最新記事】
- Java : Class 構造より、update 文を作成する
- ViewSwitcher を使用した2画面アプリ (5) : SQLiteデータを更新する
- ViewSwitcher を使用した2画面アプリ (4) : SQLiteデータをインポートしてリストビューに表示する
- Android Studio にインポートして使用する SQLite データベースを MDB より作成する VBScript
- ViewSwitcher を使用した2画面アプリ (3) : 画面部分の作成と画面切り替えテスト『画面をコントロールする Helper クラスの作成』
- ViewSwitcher を使用した2画面アプリ (2) : 画面部分の作成と画面切り替えテスト『画面の作成』
- ViewSwitcher を使用した2画面アプリ (1) : 画面部分の作成と画面切り替えテスト『メニューの作成』
- OkHttp を使用した HttpAccess クラスで Web 上の 画像をダウンロードして表示するテンプレート
- OkHttp を使用した HttpAccess クラスで Web 上の PHP アプリに対してファイルをアップロードするテンプレート
- OkHttp を使用した HttpAccess クラスで Web 上の掲示板に投稿(POST)するテンプレート
- OkHttp を使用した HttpAccess クラスで Web 上のデータを取得(GET)して ListView を表示するテンプレート
- Okhttp を使用した、GET、POST、ファイルアップロードを楽に実装できる HttpAccess クラス
- Android の assets フォルダーに保存した 400x320 の画像ファイルの扱い
- Android の drawable フォルダーに保存した 400x320 の画像ファイルの6種類の扱いと Density
- Android での保存用テキストデータの扱いを okio で簡素化する
- Android 6.0 : テストの為の Runtime Permission の対応を自動化するテンプレート
- Android Studio : Runtime Permission 等の裏方作業を MainActivity にさせて、本来の処理は継承したサブクラスで行う( カメラを呼び出して画像を保存させ、I..
- Android 6.0 エミュレータで 複数の Runtime Permission の対応を簡潔に吸収するクラス( CheckMyPermission )
- Android 6.0 の Runtime Permission に対応する前に、AndroidManifest.xml に権限の記述の必要無いプライベートな書き込みで情報を収集する
- Android Studio : エミュレータで Notification(通知)のテスト






