これもまた、よくあるUIの
リストビューの作り方を説明します。
基本的な作り方はGridViewと同じで、
ListViewオブジェクトの生成
adapterの生成
adapterにアイテムを入れる
ListViewにadapterをsetな流れです。
サンプルソースでは
アイコン(画像)と共に文字をクラスに格納させ、画面に表示させています。
行の中にレイアウトを作成しているので、
固定的なリストビューでなく、カスタマイズ可能なリストビューになっています。
package com.example.pururun; import java.util.ArrayList; import java.util.List; import android.os.Bundle; import android.app.Activity; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity implements OnItemClickListener{ private ListdataList = new ArrayList (); private final int MP = ViewGroup.LayoutParams.MATCH_PARENT; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //基礎のレイアウトを作成 LinearLayout oLayout = new LinearLayout(getApplicationContext()); //今回の主役リストビューの生成 ListView oListView = new ListView(getApplicationContext()); //リストビューに入れるアイテムのAdapterを生成 ListAdapter oAdp = new ListAdapter(getApplicationContext()); //リストビューのレイアウトを指定 oListView.setLayoutParams(new LinearLayout.LayoutParams(MP, MP)); //リストビューにアイテムadapterを設定 oListView.setAdapter(oAdp); //リストビューをクリックした時の処理を設定 oListView.setOnItemClickListener(this); for (int i = 0; i < 10; i ++){ //配列にタイトルと画像を格納 dataList.add(new ListItem(String.valueOf("番号:" + i), R.drawable.ic_launcher)); } //Adapteの中身を更新 oAdp.notifyDataSetChanged(); //基礎のレイアウトにリストビューを追加 oLayout.addView(oListView); //基礎のレイアウトを画面に設定 setContentView(oLayout); } public class ListAdapter extends BaseAdapter{ private Context mContext; public ListAdapter(Context context){ //生成時のコンストラクターでコンテクストを取得 mContext = context; } @Override public int getCount() { //リストの行数 return dataList.size(); } @Override public Object getItem(int posion) { //配列の中身を返す return dataList.get(posion); } @Override public long getItemId(int posion) { //現在の配列の場所 return posion; } @Override public View getView(int position, View view, ViewGroup parent) { TextView title; ImageView imag; View v = view; if(v==null){ //グリットビューの1マス内のレイアウトを作成 LinearLayout oListLayout = new LinearLayout(mContext); //左から右にアイテムを追加 oListLayout.setOrientation(LinearLayout.HORIZONTAL); //イメージビューを生成 ImageView oImage = new ImageView(mContext); //テキストビューを生成 TextView oText = new TextView(mContext); //判別用にタグをつける oImage.setTag("CellImage"); oText.setTag("CellTitle"); //グリットビュー用のレイアウトに追加 oListLayout.addView(oImage); oListLayout.addView(oText); v = oListLayout; } //配列から、アイテムを取得 ListItem oList = (ListItem)getItem(position); if( dataList != null){ //タグからテキストビューを取得 title = (TextView) v.findViewWithTag("CellTitle"); //取得したテキストビューに文字列を設定 title.setText(oList.Get_Text()); //タグからイメージビューを取得 imag = (ImageView) v.findViewWithTag("CellImage"); //イメージビューに画像を設定 imag.setBackgroundResource( oList.Get_Res() ); } return v; } } @Override public void onItemClick(AdapterView parent, View view, int position, long id) { //押された時のパラメーターを表示 Toast.makeText(getApplicationContext(), "押下されたのは:" + String.valueOf(position), Toast.LENGTH_SHORT).show(); Toast.makeText(getApplicationContext(), "IDは:" + String.valueOf(id), Toast.LENGTH_SHORT).show(); } }
■ListItemクラス
package com.example.pururun; public class ListItem { private String sText; private int iRes; public ListItem(String text, int res){ //文字列を取得 sText = text; //画像のResIDを取得 iRes = res; } public String Get_Text(){ //文字列を返す return sText; } public int Get_Res(){ //画像のResIDを返す return iRes; } }
■実行結果
0 件のコメント:
コメントを投稿