ListView中的几个常用adapter的使用示例

一、ArrayAdapter

/**
* ArrayAdapter<String>的使用
*/

public void onCreate(Bundle savedInstanceState){
	super.onCreate(savedInstanceState);
	setContentView(R.layout.main);
	ListView listView = (ListView)findViewById(R.id.list);
	//第一步:找到用来填充的数据源,可以从数据库或者文件中读取
	String[] arr = {"AAA","BBB","CCC"};
	//第二步:new 一个ArrayAdapter出来,三个参数分别是当前Activity的上下文,填充的样式(可用系统自带的,也用自定义的布局文件),数据源
	ArrayAdapter<String> mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_Item_1, arr);
	//将adapter绑定到listView中
	listView.setAdapter(mAdapter);
}

二、SimpleAdapter

/**
* SimpleAdapter的使用
*/

public class SimpleAdapterlist extends ListActivity{
	//注意:这里继承ListAcitivity时,布局文件应包含一个id为“@+id/android:list”的listView
	private String[] names = new String[]{"刘","张","黎","郭"};
	private int[] imgIds = new Int[]{R.drawable.header01,R.drawable.header02,R.drawable.header03,R.drawable.header04};
	
	public void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
		//创建一个list链表
		List<Map<String,Object>> listItems = new ArrayList<Map<String , Object>>();
		for(int i=0; i<names.length; i++){
			Map<String , Object> item = new HashMap<String , Object>();
			item.put("header",imgIds[i]);
			item.put("name",names[i]);
			listItem.add(item);
		}
		
		SimpleAdapter madapter = new SimpleAdapter(this, listItems, R.layout.main, new String[]{"header","name"}, new int[]{"R.id.header","R.id.name"});
		//四个参数说明:第一个上下文, 第二个使用该adapter 的布局文件的id , 第三个是from ,即数据来源,第四个是to ,即把数据填充到哪些控件进行显示
		setListAdapter(madapter);
	}
}

三、BaseAdapter

/**
* BaseAdapter的使用
*/

private class MyAdapter extends BaseAdapter{
	private LayoutInflater mInflater;
	public MyAdapter(Context context){
		this.mInflater = LayoutInflater.from(context);
	}
	.
	.此处省略一些重写的方法
	.
	public View getView(final int position, View convertView, ViewGroup parent){
		ViewHold holder = null;
		if(convertView == null){
			holder = new ViewHolder();
			convertView = mInflater.inflater(R.laout.item, null);
			holder.title = (TextView)convertView.findViewById(...);
			holder.text = (TextView)convertView.findViewById(...);
			holder.btn = (Button)convertView.findViewById(...);
			convertView.setTag(holder);//绑定ViewHolder对象
		}else{
			holder = (ViewHolder)convertView.getTag();
		}
		//设置TextView 显示的内容, 即我们存放在动态数组中的数据
		holder.title.setText(getData().get(position).get("ItemTitle").toString());
		holder.title.setText(getData().get(position).get("ItemText").toString());
		holder.btn.setOnClickListener(new OnClickListener(){
			pulbic void onClick(View view){....}
		});
		return convertView;
	}
}

public final class ViewHolder{
	public TextView title;
	public TextView text;
	public Button btn;
}

//另注:在getView()方法里添加一更新View的方法
public void remove(int position){
	mAppList.remove(position);
	this.notifyDataSetChanged();
}

最后,还有个CursorAdapter,以后用到时再补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值