之前有问过:
http://topic.csdn.net/u/20110715/10/2161227a-30f8-4572-be42-887227010014.html
得到的答复是:
ListView listView = (ListView)findViewById(R.id.配置文件中ListView的ID);
//全选遍历ListView的选项,每个选项就相当于布局配置文件中的RelativeLayout
for(int i = 0; i < listView.getChildCount(); i++){
View view = listView.getChildAt(i);
CheckBox cb = (CheckBox)view.findViewById(R.id.配置文件中CheckBox的ID);
cb.setChecked(true);
}
现在的问题是,我遍历的是TextView,但是当这个TextView里面文本太长的话,findViewById就会出错,
为什么呢?
http://topic.csdn.net/u/20110715/10/2161227a-30f8-4572-be42-887227010014.html
得到的答复是:
ListView listView = (ListView)findViewById(R.id.配置文件中ListView的ID);
//全选遍历ListView的选项,每个选项就相当于布局配置文件中的RelativeLayout
for(int i = 0; i < listView.getChildCount(); i++){
View view = listView.getChildAt(i);
CheckBox cb = (CheckBox)view.findViewById(R.id.配置文件中CheckBox的ID);
cb.setChecked(true);
}
现在的问题是,我遍历的是TextView,但是当这个TextView里面文本太长的话,findViewById就会出错,
为什么呢?
TextView tv = (TextView)listView.getChildAt(i).findViewById(R.id.配置文件中CheckBox的ID); i=0的时候,就是第一行,不会出错,后面就全是java.null......
ArrayAdapter<String> adapter = (ArrayAdapter<String>)list.getAdapter();
然后遍历adapter即可
R.id.配置文件中CheckBox的ID? 转化成 TextView?
lz可能会问为什么i == 0时不报空?此时的listView和listView.getChildAt(i)是同一个组件同一个对象
你试试。
那么adapter的这种方式就很好
用adapter是可以遍历到,但是给textview设置字体是不起作用的。用这个:
TextView tv = (TextView)listView.getChildAt(i).findViewById(R.id.配置文件中CheckBox的ID); 当文本太长的时候会出错
例如:
<LinearLayout id=1>
<TextView/ id=2>
<LinearLayout id=3>
<TextView/ id=4>
</LinearLayout>
</LinearLayout>
1只能找到2和3,不能找到4,必须先找到3,通过3才能找到4.