ListView 动态多重嵌套

来源:互联网 发布:儿童上网控制软件 编辑:程序博客网 时间:2024/05/21 14:50

public class TestView extends ListActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        List<String> list = new ArrayList<String>();
        list.add("hello");
        list.add("world");
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");
        /**
         * 设置ListActivity的适配器
         */
       setListAdapter(new MyAdapter(Test2.this,list));
       
    }
}
/**
 * 基于BaseAdapter的自定义Adapter
 * @author Administrator
 *
 */
class MyAdapter extends BaseAdapter{

 Context context;
 List<String> titles;
 /**
  * LayoutInflater 是将layout.xml转化成View的类
  */
 LayoutInflater lif;
 public MyAdapter(Context context,List<String> titles){
  this.context = context;
  this.titles = titles;
 }
 /**
  * list总数
  */
 public int getCount() {
  return titles.size();
 }
 /**
  * 返回 position项
  */
 public Object getItem(int position) {
  return null;
 }
 /**
  * 返回itemId
  */
 public long getItemId(int position) {
  return position;
 }
 /**
  * View关键代码
  */
 public View getView(int position, View convertView, ViewGroup parent) {
  MyView mv;
  final int pos = position;
  /**
   * 自定义的view就是修改这个convertView就可以了
   */
  if(convertView == null){
   mv = new MyView();
   lif = LayoutInflater.from(context);//转化到context这个容器
   convertView = lif.inflate(R.layout.layout, null);//设置要转化的layout文件
   mv.tv = (TextView)convertView.findViewById(R.id.Title);//取得实例
   mv.btn = (Button)convertView.findViewById(R.id.Button01);//取得实例
   convertView.setTag(mv);
  }else{
   mv = (MyView)convertView.getTag();
  }
  mv.tv.setText(titles.get(position));
  
  mv.tv.setOnClickListener(new OnClickListener(){

   @Override
   public void onClick(View v) {
    Log.d("abd---", Integer.toString(pos));
    
   }});
  
  mv.btn.setText(titles.get(position));
  /**
   * 组件的事件也是在这里做
   */
  mv.btn.setOnClickListener(new Button.OnClickListener(){

   public void onClick(View v) {
    Toast.makeText(context, "我是Title:"+titles.get(pos)+" 的button", Toast.LENGTH_LONG).show();
    
   }
   
  });
  return convertView;
 }
 /**
  * 自定义的一个View
  * @author Administrator
  *
  */
 private class MyView{
  TextView tv;
  Button btn;
 }
 
}

 

/*mail.xml*/

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <!-- 如果是ListActivity,android:id属性的值不能随便取,只能取ID为="@android:id/list",如果只是应用ListView这个容器,id就随便啦 -->
<ListView android:id="@android:id/list" android:layout_width="wrap_content" android:layout_height="wrap_content"></ListView>
</LinearLayout>

 

 

----------------------------------

 

/* layout.xml*/

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <TextView 
 android:id="@+id/Title"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
   
    />
   
<Button android:text="@+id/Button01" android:id="@+id/Button01" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>


</LinearLayout>

原创粉丝点击