【Android】listView动态处理item

背景:
主界面有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的转换问题,以后再说。



禁止转载

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。