首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

listview动态生成的控件如何获取名字

2013-12-04 
listview动态生成的控件怎么获取名字啊LinearLayoutxmlns:androidhttp://schemas.android.com/apk/res/

listview动态生成的控件怎么获取名字啊
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout 
android:orientation="vertical" 
android:layout_width="wrap_content"
android:layout_height="wrap_content">
    <TextView android:id="@+id/title" 
android:layout_width="wrap_content"
android:layout_height="wrap_content" 
android:textColor="#FFFFFFFF"
android:textSize="22px" />
<TextView android:id="@+id/info" 
android:layout_width="wrap_content"
android:layout_height="wrap_content" 
android:textColor="#D1D1D1"
android:textSize="13px" />
</LinearLayout>
<LinearLayout 
        android:orientation="vertical" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:layout_weight="1">
<CheckBox
    android:layout_gravity="right"
    android:id="@+id/check"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    ></CheckBox>
</LinearLayout>
</LinearLayout>
然后把他绑定到listview上面 里面的数据是我用SimpleAdapter动态生成的 但是现在问题是我怎么获取到哪个个checkbox 我想监听他直接findviewbyid(r.id.check)总是爆空异常 而且每行数据的checkbox不可能都是一个名字吧 这种问题怎么解决啊大家 谢谢 listview
[解决办法]

引用:
Quote: 引用:

动态设置checkbox的id,记住id就可以了

请细说一下可以么 没能理解 我的layout里面有这个控件 我还要给她设置么 。

对,你可以重新设置id比如setId(0x0020);等,自己来规定,然后再根据id去获取
[解决办法]
重写listview的getview,在返回值前加一个处理的事件
http://blog.csdn.net/zhangxing555/article/details/8793099

 @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        convertView = mInflater.inflate(layoutID, null);
        for (int i = 0; i < flag.length; i++) {//备注1
            if (convertView.findViewById(ItemIDs[i]) instanceof ImageView) {
                ImageView iv = (ImageView) convertView.findViewById(ItemIDs[i]);
                iv.setBackgroundResource((Integer) list.get(position).get(
                        flag[i]));
            } else if (convertView.findViewById(ItemIDs[i]) instanceof TextView) {
                TextView tv = (TextView) convertView.findViewById(ItemIDs[i]);
                tv.setText((String) list.get(position).get(flag[i]));
            }else{
                //...备注2
            }
        }
        addListener(convertView);
        return convertView;
    }
/**
 * 童鞋们只需要将需要设置监听事件的组件写在下面这方法里就可以啦!
 * 别的不需要修改!
 * 备注3
 */
    public void addListener(View convertView) {
        ((Button)convertView.findViewById(R.id.btn)).setOnClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {


                        new AlertDialog.Builder(MainActivity.ma)
                        .setTitle("自定义通用SimpleAdapter")
                        .setMessage("按钮成功触发监听事件!")
                        .show();
                    }
                });
        ((CheckBox)convertView.findViewById(R.id.cb)).
        setOnCheckedChangeListener(new OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                new AlertDialog.Builder(MainActivity.ma)
                .setTitle("自定义通用SimpleAdapter")
                .setMessage("CheckBox成功触发状态改变监听事件!")
                .show();
            }
        });
    }

热点排行