ListView 动态多重嵌套

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>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值