在Android中ListView的使用较为复杂一点,也就是配置其Adapter,Adapter有几种,有ArrayAdapter,SimpleAdapter等,首先要生成一个ListView(当然可以使用ListActivity,此Activity整合了ListView)然后用Adapter来设定ListView的显示数据及布局方式,然后再来响应OnItemClick 事件,或者在ListActivity改写onListItemClick 响应事件函数。看如下代码演示了使用ListActivity:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleAdapter;
public class Test extends ListActivity {
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super .onListItemClick(l, v, position, id);
this .setTitle( this .mModelData.get(position).get( " type " ).toString());
}
SimpleAdapter adapter = null ;
private ArrayList < Map < String, Object >> mModelData = null ;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
initModelData();
adapter = new SimpleAdapter( this , mModelData, android.R.layout.two_line_list_item, new String[]{ " name " }, new int []{android.R.id.text1});
this .setListAdapter(adapter);
// setContentView(R.layout.main);
}
public void initModelData()
{
mModelData = new ArrayList < Map < String, Object >> ();
Map < String, Object > item = new HashMap < String,Object > ();
item.put( " name " , " Linux " );item.put( " type " , " OS " );
mModelData.add(item);
Map < String, Object > item2 = new HashMap < String,Object > ();
item2.put( " name " , " Android " );item2.put( " type " , " Platform " );
mModelData.add(item2);
Map < String, Object > item3 = new HashMap < String,Object > ();
item3.put( " name " , " Tomato " );item3.put( " type " , " Fruit " );
mModelData.add(item3);
}
}
下面代码显示了,使用ListView + Activity:
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;
public class TestStringList extends Activity implements OnItemClickListener {
@Override
public void onItemClick(AdapterView <?> arg0, View arg1, int arg2, long arg3) {
this .setTitle( " You Click Item: " + String.valueOf(arg2));
}
private ListView mListView = null ;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super .onCreate(savedInstanceState);
mListView = new ListView( this );
mListView.setOnItemClickListener( this );
ArrayAdapter < String > adapter = new ArrayAdapter < String > ( this ,android.R.layout.simple_list_item_checked,
new String[]{ " ItemA " , " ItemB " , " ItemC " });
mListView.setAdapter(adapter);
this .setContentView(mListView);
}
}
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleAdapter;
public class Test extends ListActivity {
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super .onListItemClick(l, v, position, id);
this .setTitle( this .mModelData.get(position).get( " type " ).toString());
}
SimpleAdapter adapter = null ;
private ArrayList < Map < String, Object >> mModelData = null ;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
initModelData();
adapter = new SimpleAdapter( this , mModelData, android.R.layout.two_line_list_item, new String[]{ " name " }, new int []{android.R.id.text1});
this .setListAdapter(adapter);
// setContentView(R.layout.main);
}
public void initModelData()
{
mModelData = new ArrayList < Map < String, Object >> ();
Map < String, Object > item = new HashMap < String,Object > ();
item.put( " name " , " Linux " );item.put( " type " , " OS " );
mModelData.add(item);
Map < String, Object > item2 = new HashMap < String,Object > ();
item2.put( " name " , " Android " );item2.put( " type " , " Platform " );
mModelData.add(item2);
Map < String, Object > item3 = new HashMap < String,Object > ();
item3.put( " name " , " Tomato " );item3.put( " type " , " Fruit " );
mModelData.add(item3);
}
}
下面代码显示了,使用ListView + Activity:
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;
public class TestStringList extends Activity implements OnItemClickListener {
@Override
public void onItemClick(AdapterView <?> arg0, View arg1, int arg2, long arg3) {
this .setTitle( " You Click Item: " + String.valueOf(arg2));
}
private ListView mListView = null ;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super .onCreate(savedInstanceState);
mListView = new ListView( this );
mListView.setOnItemClickListener( this );
ArrayAdapter < String > adapter = new ArrayAdapter < String > ( this ,android.R.layout.simple_list_item_checked,
new String[]{ " ItemA " , " ItemB " , " ItemC " });
mListView.setAdapter(adapter);
this .setContentView(mListView);
}
}