android之简单listview适配器


listview的控件很好使用,但要在上面按照我们希望的格式放上数据,这就需要baseadapter的帮助了。这里简单列出一个

public class MyAdapter extends BaseAdapter{
	private List<Map<String, String>> list;
	private Context context;

	public MyAdapter(List<Map<String, String>> list,Context context){
		this.list=list;
		this.context = context;
	}

	public int getCount() {
		return list.size();
	}

	public Object getItem(int position) {
		return list.get(position);
	}

	public long getItemId(int position) {
		return position;
	}

	public View getView(int position, View convertView, ViewGroup parent) {
		if(convertView == null){
			convertView = LayoutInflater.from(context).inflate(R.layout.listview, null);
		}
		TextView title = (TextView) convertView.findViewById(R.id.title);
		title.setText(list.get(position).get("title"));
		return convertView;
	}
	
}
getCount()返回的是listview的长度,也就是含有多少条数据吧
getItemId也就是返回当前的条目,即第几条
getView当然返回的是一个布局了




convertView = LayoutInflater.from(context).inflate(R.layout.listview, null); 这句话的意思就是把我们找到的listview,xml文件布局给我们listview里面的每个item,即每一条,然后通过控制converView来实现我们要展现的形式。这里的判空是用来实现converView的复用性,这个如果不明白可以查阅更多资料去加以理解。
剩下的事情就简单了,也就是在我们的avtivity文件里面配置一下就好,这里我简单写两句。

 listView = (ListView) findViewById(R.id.listview);
 listView.setAdapter(new MyAdapter(list, Test2Activity.this));

这两句的意思分别是找出我们想要的控件,并把我们的布局与数据放进去。这个list数据大家可以自己设置,我把我的数据展示如下

private void init() {
		list = new ArrayList<Map<String,String>>();
        map = new HashMap<String, String>();
        map.put("title", "我的资料");
        list.add(map);
        
        map = new HashMap<String, String>();
        map.put("title", "好友管理");
        list.add(map);
        
        map = new HashMap<String, String>();
        map.put("title", "偏好设置");
        list.add(map);
        
        map = new HashMap<String, String>();
        map.put("title", "注册新账户");
        list.add(map);
        
        map = new HashMap<String, String>();
        map.put("title", "找回密码");
        list.add(map);
        
        map = new HashMap<String, String>();
        map.put("title", "关于我们");
        list.add(map);
        
        map = new HashMap<String, String>();
        map.put("title", "...");
        list.add(map);
		
	}
请记住,数据放在适配器之前呢是可以直接调用进去的,如果之后呢需要调用这样一个方法来通知适配器更新数据,adapter.notifyDataSetChanged()这里有不懂的就自己琢磨吧。

这里简单献上我的listview的item的布局文件

<?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:gravity="center_vertical" >

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="1" />

        <TextView
            android:id="@+id/content"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="aa" />
    </LinearLayout>

</LinearLayout>

截图展示我所实现的效果

     关于listview的更多内容,我会在以后的介绍中陆续加上,敬请期待。。。



这里再补充一个更简单的适配器,能适配很多内容,只要不是很复杂的都可以实现,代码如下:

 //参数分别代表 上下文 存放数据的集合 布局文件 集合里面的字段 item布局里面对应的字段
        SimpleAdapter mss=new SimpleAdapter(ChengActivity.this, list,R.layout.listview, new String[]{"iocn","text"},new int[]{R.id.imageView,R.id.textView});
顺便附带我定义的集合
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();

截图如下



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值