转载:http://skyfengfu.diandian.com/post/2012-10-09/40039413744
ListView是安卓部分中,很常用的一个控件,也是很灵活的一个空间,在软件的很多常用布局中都会用到,所以要熟练运用。
一、初级(简单的现实一个列,并对其点击事件做处理)
效果如下:
点击处理只是一个简单的吐司提示:
这个简单效果的实现有多种方式。
1、让activity继承ListActivity,并且舍弃XML布局文件,全部采用默认布局中存在的布局来布局(=、=)。
首先将继承的Activity改为ListActivity,删除掉
setContentView(R.layout.activity_main);这一句。
然后这个MainActivity本身就是一个ListActivity
public class MainActivity extends ListActivity { private List<String> arrayData; // private List<Map<String, ?>> simpleData; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); arrayData = getData(); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arrayData); setListAdapter(adapter); } private List<String> getData() { List<String> data = new ArrayList<String>(); data.add("刘备"); data.add("关羽"); data.add("张飞"); data.add("赵云"); return data; } @Override protected void onListItemClick(ListView l, View v, int position, long id) { // TODO Auto-generated method stub super.onListItemClick(l, v, position, id); Toast.makeText(this, arrayData.get(position), Toast.LENGTH_LONG).show(); }
可以重写ListActivity的系列方法,如onListItemClick();等
2、依然让MainActivity继承Activity,不舍弃XML文件布局方法。
在main布局文件中可以只是简单的布局一个ListView控件,代码就不贴了
在java类中,代码以及注释如下:
public class MainActivity extends Activity { private List<String> arrayData; // private List<Map<String, ?>> simpleData; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); arrayData = getData(); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arrayData); //继承自ListActivity的时候 // setListAdapter(adapter); //采用布局文件来布局 setContentView(R.layout.activity_main); ListView listview = (ListView) this.findViewById(R.id.listView); listview.setAdapter(adapter); listview.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> arg0, View arg1, int position, long id) { Toast.makeText(getApplicationContext(), arrayData.get(position), Toast.LENGTH_LONG).show(); } }); } //如果是继承ListeActivity的话,可以通过重写一下方法来设置点击事件 // @Override // protected void onListItemClick(ListView l, View v, int position, long id) { // // TODO Auto-generated method stub // super.onListItemClick(l, v, position, id); // Toast.makeText(this, arrayData.get(position), Toast.LENGTH_LONG).show(); // } private List<String> getData() { List<String> data = new ArrayList<String>(); data.add("刘备"); data.add("关羽"); data.add("张飞"); data.add("赵云"); return data; } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } }
效果一样。