前のバージョンはこちらになりますが、世の中に腐るほどある 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, OnGetViewListenerlistener) { 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(通知)のテスト