package com.example.baidumap;
import java.util.ArrayList; import java.util.HashMap; import java.util.List;
import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListAdapter; import android.widget.LinearLayout.LayoutParams; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.TextView;
public class Main extends Activity{ private String[] adapterData = new String[] { "Afghanistan", "b", "b", "Algeria", "Algeria", "Algeria", "Algeria", "Algeria", "b", "b", "Algeria", "Algeria", "Algeria", "Algeria", "Algeria", "Algeria", "Algeria", "Algeria", "Algeria", "Algeria", "Algeria", "Algeria", "Algeria", "Algeria", "Algeria", "Algeria" };
@Override protected void onCreate(Bundle savedInstanceState) { List<HashMap<String, String>> list=new ArrayList<HashMap<String,String>>(); for(int i=0;i<5;i++){ HashMap<String, String> hashMap=new HashMap<String, String>(); hashMap.put("aaa", "aaa"+i); list.add(hashMap); } // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.aa); LinearLayout layout=(LinearLayout)findViewById(R.id.id); for(int i=0;i<3;i++){ TextView view=new TextView(Main.this); view.setText("cccccc"); layout.addView(view); //layout2.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT )); //layout.addView(layout2); ListView view2=new ListView(Main.this); view2.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT )); layout.addView(view2); MyAdapter adapter=new MyAdapter(Main.this, adapterData); //SimpleAdapter adapter=new SimpleAdapter(Main.this,list , R.layout.item, new String[]{"aaa"}, new int[]{R.id.ids}); view2.setAdapter(adapter); setListViewHeightBasedOnChildren(view2); } } class MyAdapter extends BaseAdapter { Context context; String[] adapterData; public MyAdapter(Context context,String[] adapterData){ this.context=context; this.adapterData=adapterData; } @Override public int getCount() { // TODO Auto-generated method stub return adapterData.length; }
@Override public Object getItem(int arg0) { // TODO Auto-generated method stub return adapterData[arg0]; }
@Override public long getItemId(int arg0) { return arg0; }
@Override public View getView(int arg0, View arg1, ViewGroup arg2) { // TODO Auto-generated method stub // super.initLinearLayout(); if(arg1==null){ arg1=LayoutInflater.from(context).inflate(R.layout.item, null); } TextView view=(TextView)arg1.findViewById(R.id.ids); view.setText(adapterData[arg0]); return arg1; // TextView tv = new TextView(MainActivity.this); // tv.setLayoutParams(new ListView.LayoutParams( // LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); // tv.setText(adapterData[arg0]); // return tv; } } public void setListViewHeightBasedOnChildren(ListView listView) { ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { return; } int totalHeight = 0; for (int i = 0; i < listAdapter.getCount(); i++) { View listItem = listAdapter.getView(i, null, listView); listItem.measure(0, 0); //在还没有构建View 之前无法取得View的度宽。 在此之前我们必须选 measure 一下. totalHeight += listItem.getMeasuredHeight(); } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); // params.height += 5;// if without this statement,the listview will be // a // little short // listView.getDividerHeight()获取子项间分隔符占用的高度 // params.height最后得到整个ListView完整显示需要的高度 listView.setLayoutParams(params); }
}
|