首页 > 移动平台 > 详细

【Android】listView动态处理item

时间:2015-03-24 17:34:47      阅读:312      评论:0      收藏:0      [点我收藏+]
背景:
主界面有listView ,id是List_main,adapter是直接new出来的


-----------------------我是分割线---------------------------------
由于listview在中间,我想让三个item占满他,而listview的大小也是根据屏幕分辨率调的,我的办法是用inflate拿到adapter布局里面的高,然后用getLayoutParams().height=XX来改,后来我发现,值拿到了,也改了,log出来的值也是改过的值,但是界面上的高就是没变。


后来在某大神的博客找到方法


adapter这个类每在新建item的时候都会调用一次getView方法,我写了一个adapter继承自SimpleAdapter,然后再new我的这个adapter,在参数里面加一个值,给getview用
代码如下


adapter

package com.example.android_class;

import java.util.List;
import java.util.Map;
import com.example.android_class.MainActivity;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.SimpleAdapter;

public class MyAdapter extends SimpleAdapter {
     int myh;
	public MyAdapter(Context context, List<? extends Map<String, ?>> data,
			int resource, String[] from, int[] to,int myh) {
		
		super(context, data, resource, from, to);
		this.myh=myh;


	}
	public View getView(int position, View convertView, ViewGroup parent) {
		 
		View v = super.getView(position, convertView, parent);
		v.getLayoutParams().height=myh;
		 
		return v;
	}

}

activity

private void init_setAdapter() {
		
		List<Map<String, Object>> l = new ArrayList<Map<String, Object>>();
		
		Map<String, Object> m = new HashMap<String, Object>();
		m.put("main_adapter_img", R.drawable.week);
		m.put("main_adapter_textView", "本周数据");
		l.add(m);
		m = new HashMap<String, Object>();
		m.put("main_adapter_img", R.drawable.month);
		m.put("main_adapter_textView", "本月数据");
		l.add(m);
		m = new HashMap<String, Object>();
		m.put("main_adapter_img", R.drawable.year);
		m.put("main_adapter_textView", "本年数据");
		l.add(m);
		
		MyAdapter s = new MyAdapter(this,l,R.layout.activity_main_adapter,new String[]{"main_adapter_img","main_adapter_textView"},new int[]{R.id.main_adapter_img,R.id.main_adapter_textView},list_main.getLayoutParams().height/3);
		list_main.setAdapter(s);
		
	}

还有一个问题就是像素和dp的转换问题,以后再说。



禁止转载

【Android】listView动态处理item

原文:http://blog.csdn.net/fried_potatoes/article/details/44594175

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!