AndroidのListViewコントロール
図のような効果を実現する:1.フルーツの名前と、フルーツの写真
2.ListViewをクリックしてクリックイベントに応答する
まずレイアウトファイルを書きます.
1 activity_main.xmlはListViewにidを設定する
2 fruit_item.xml android:layout_gravity="centerでテキストを中央に表示
2.ListViewをクリックしてクリックイベントに応答する
まずレイアウトファイルを書きます.
1 activity_main.xmlはListViewにidを設定する
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<ListView
android:id="@+id/list_View"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
2 fruit_item.xml android:layout_gravity="centerでテキストを中央に表示
<pre name="code" class="html"><?xml version="1.0" encoding="utf-8"?> <!-- -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
>
<ImageView
android:id="@+id/fruit_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/fruit_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="10dp"
/>
<!-- android:layout_gravity="center" -->
</LinearLayout>
<span style="font-family: Arial, Helvetica, sans-serif;"> , java </span>
Fruit.javaMainActivity.javapackage com.example.listviewtest; public class Fruit { private String name; // private int imageId; // id public Fruit(String name, int imageId) // { this.name = name; this.imageId = imageId; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getImageId() { return imageId; } public void setImageId(int imageId) { this.imageId = imageId; } }
MainActivityで最初に表示するリソースファイルはここでprivate ListfruitList=new ArrayList ()を定義します.次にアダプタをカスタマイズします.このアダプタはArrayAdapterから継承され、汎用型をFruitクラスに作成します.
新規FruitAdapterMainActivity.javapackage com.example.listviewtest; import java.util.List; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; public class FruitAdapter extends ArrayAdapter<Fruit> // Fruit { private int resourceId; private ImageView fruitImage; private TextView fruitName ; private View view; /* ArrayAdapter<> * ArrayAdapter , ,ListView id * */ //1 public FruitAdapter( Context context, // int textViewResourceId, //ListView id List<Fruit> objects) // { super(context, textViewResourceId, objects); resourceId = textViewResourceId ; } //2 getView() // @Override public View getView(int position, View convertView, ViewGroup parent) { Fruit fruit = getItem(position);// getItem() Fruit ViewHolder viewHolder; if(convertView == null)// , , { // LayoutInflater view = LayoutInflater.from(getContext()).inflate(resourceId, null); viewHolder = new ViewHolder(); // View FindViewById() ImageView TextView viewHolder.fruitImage =(ImageView) view.findViewById(R.id.fruit_image); viewHolder.fruitName =(TextView) view.findViewById(R.id.fruit_name); view.setTag(viewHolder); // viewHolder view } else { view =convertView; viewHolder = (ViewHolder) view.getTag(); // viewHolder } /* fruitImage =(ImageView) view.findViewById(R.id.fruit_image); fruitName =(TextView) view.findViewById(R.id.fruit_name);*/ // setImageResource(fruit.getImageId()),setText(fruit.getName()); viewHolder.fruitImage.setImageResource(fruit.getImageId()); viewHolder.fruitName.setText(fruit.getName()); return view ; } class ViewHolder // , ViewHolder , , , { ImageView fruitImage; TextView fruitName; } }
package com.example.listviewtest; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.Window; import android.widget.AdapterView; import android.widget.Toast; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; public class MainActivity extends Activity { private List<Fruit> fruitList = new ArrayList<Fruit>(); @Override protected void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initFruit(); // FruitAdapter adapter = new FruitAdapter(getApplicationContext(),R.layout.fruit_item,fruitList); ListView listview = (ListView) findViewById(R.id.list_View); listview.setAdapter(adapter); listview.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position,long id) { Fruit fruit = fruitList.get(position); Toast.makeText(MainActivity.this, " "+fruit.getName(), 0).show(); } }); } private void initFruit() { Fruit aa = new Fruit("aa", R.drawable.aa); fruitList.add(aa); Fruit bb = new Fruit("bb", R.drawable.bb); fruitList.add(bb); Fruit cc = new Fruit("cc", R.drawable.cc); fruitList.add(cc); Fruit ee = new Fruit("ee", R.drawable.ee); fruitList.add(ee); Fruit ff = new Fruit("ff", R.drawable.ff); fruitList.add(ff); Fruit gg = new Fruit("gg", R.drawable.gg); fruitList.add(gg); Fruit hh = new Fruit("hh", R.drawable.hh); fruitList.add(hh); Fruit ii = new Fruit("ii", R.drawable.ii); fruitList.add(ii); Fruit jj = new Fruit("jj", R.drawable.jj); fruitList.add(jj); Fruit ll = new Fruit("ll", R.drawable.ll); fruitList.add(ll); Fruit mm = new Fruit("mm", R.drawable.mm); fruitList.add(mm); } }