背景:
主界面有listView ,id是List_main,adapter是直接new出来的
-----------------------我是分割线---------------------------------
由于listview在中间,我想让三个item占满他,而listview的大小也是根据屏幕分辨率调的,我的办法是用inflate拿到adapter布局里面的高,然后用getLayoutParams().height=XX来改,后来我发现,值拿到了,也改了,log出来的值也是改过的值,但是界面上的高就是没变。
后来在某大神的博客找到方法
adapter这个类每在新建item的时候都会调用一次getView方法,我写了一个adapter继承自SimpleAdapter,然后再new我的这个adapter,在参数里面加一个值,给getview用
代码如下
activity
主界面有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的转换问题,以后再说。
禁止转载