两个demo,参考hellogv的blog
主要的步骤如下:
package com.example.listviewtest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.widget.ListView;
import android.widget.SimpleAdapter;
/**
* ListView的用法:
* 1.初始化listview的数据源
* 2.通过SimpleAdapter将数据源与listview的layout绑定
* 3.将构建好的 adapter 与 listView 绑定
* @author hint
*/
public class MainActivity extends Activity {
List<HashMap<String,String>> myList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化数据源
initData();
ListView listView = (ListView)findViewById(R.id.myListView);
//数据源 与 listview的layout适配
SimpleAdapter mSchedule = new SimpleAdapter(this, myList, R.layout.item_list,
new String[]{"ItemTitle","ItemText"},
new int[]{R.id.itemTitle,R.id.itemText});
//listview绑定adapter
listView.setAdapter(mSchedule);
}
private void initData(){
myList = new ArrayList<HashMap<String,String>>();
for(int i = 0; i < 30 ; i++){
HashMap<String,String> map = new HashMap<String, String>();
map.put("ItemTitle", "title "+i);
map.put("ItemText", "text "+i);
myList.add(map);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
demo2:
这个demo复杂一点:
package com.example.listviewtest;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
/**
*1.自定义adpter实现BaseAdapter接口->ListViewAdpter。
*2.ListViewAdpter中通过LayoutInflater(布局泵)渲染listView中每个单独的view。
*3.将每个单独的view组成一个view数组
*4.绑定当前的listview和ListViewAdpter
* @author hint
*/
public class MainActivity2 extends Activity {
private ListView listView ;
private String[] itemTitles = {"标题1","标题2","标题3","标题4",};
private String[] itemTexts = {"内容1","内容2","内容3","内容4",};;
private int[] itemImagese = {R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView)findViewById(R.id.myListView);
listView.setAdapter(new ListViewAdpter(itemTitles,itemTexts,itemImagese));
}
class ListViewAdpter extends BaseAdapter{
View[] itemViews;
public ListViewAdpter(String[] itemTitles,String[] itemTexts,int[] itemImagese) {
itemViews = new View[itemTitles.length];
for(int i = 0; i < itemTitles.length; i++){
itemViews[i] = makeItemView(itemTitles[i],itemTexts[i],itemImagese[i]);
}
}
private View makeItemView(String itemTitle, String itemText, int itemImages) {
LayoutInflater inflater = (LayoutInflater)MainActivity2.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// LayoutInflater inflater2 = MainActivity2.this.getLayoutInflater();
View itemView = inflater.inflate(R.layout.item_list, null);
TextView text = (TextView)itemView.findViewById(R.id.itemText);
text.setText(itemText);
TextView title = (TextView)itemView.findViewById(R.id.itemTitle);
title.setText(itemTitle);
ImageView image = (ImageView)itemView.findViewById(R.id.itemImage);
image.setImageResource(itemImages);
return itemView;
}
@Override
public int getCount() {
return itemViews.length;
}
@Override
public Object getItem(int position) {
return itemViews[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null){
return itemViews[position];
}
return convertView;
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}