ListView中的多选有BUG大家知道吗 ListView中的多选有BUG大家知道吗 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 getListView().setCacheColorHint(Color.TRANSPARENT);或者在xml中给ListView设置这个属性 android:cacheColorHint="#00000000" 大家请看!http://www.baidu.com/s?wd=android+ListView+Bug&inputT=7547 main.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"> <Button android:text="对话框中是复选列表" android:id="@+id/button5" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button></LinearLayout>Main.java代码如下:package wrongDialogListView.test.run;import java.lang.reflect.Field;import android.app.Activity;import android.app.AlertDialog;import android.content.DialogInterface;import android.content.DialogInterface.OnMultiChoiceClickListener;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.CheckedTextView;import android.widget.ListView;public class Main extends Activity { private Button button5; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // //////////////////// button5 = (Button) this.findViewById(R.id.button5); button5.setOnClickListener(new View.OnClickListener() { public void onClick(View arg0) { final String[] userInfoArray = new String[] { "我是A", "我是B", "我是C", "我是D" }; final AlertDialog adRef = new AlertDialog.Builder(Main.this) .setMultiChoiceItems(userInfoArray, new boolean[] { true, false, true, false }, new OnMultiChoiceClickListener() { public void onClick(DialogInterface arg0, int arg1, boolean arg2) { Log.v("zzzzzzzzzzzz", "" + arg1 + " " + arg2); } }).create(); adRef.setButton("全选", new DialogInterface.OnClickListener() { public void onClick(DialogInterface arg0, int arg1) { ListView lv = adRef.getListView(); for (int i = 0; i < lv.getCount(); i++) { lv.setItemChecked(i, true); } try { Field field = adRef.getClass().getSuperclass() .getDeclaredField("mShowing"); field.setAccessible(true); // 将mShowing变量设为false,表示对话框已关闭 field.set(adRef, false); adRef.dismiss(); } catch (Exception e) { } } }); adRef.setButton3("反选", new DialogInterface.OnClickListener() { public void onClick(DialogInterface arg0, int arg1) { ListView lv = adRef.getListView(); for (int i = 0; i < lv.getCount(); i++) { View view = lv.getChildAt(i); if (view instanceof CheckedTextView) { ((CheckedTextView) view).toggle(); } } try { Field field = adRef.getClass().getSuperclass() .getDeclaredField("mShowing"); field.setAccessible(true); // 将mShowing变量设为false,表示对话框已关闭 field.set(adRef, false); adRef.dismiss(); } catch (Exception e) { } } }); adRef.setButton2("确定", new DialogInterface.OnClickListener() { public void onClick(DialogInterface arg0, int arg1) { ListView lv = adRef.getListView(); for (int i = 0; i < lv.getCount(); i++) { if (lv.getCheckedItemPositions().get(i)) { Log.v("多选选中了:", "" + lv.getAdapter().getItemId(i) + " " + lv.getAdapter().getItem(i)); } } try { Field field = adRef.getClass().getSuperclass() .getDeclaredField("mShowing"); field.setAccessible(true); // 将mShowing变量设为false,表示对话框已关闭 field.set(adRef, true); adRef.dismiss(); } catch (Exception e) { } } }); adRef.show(); } }); }}大家可以运行一下,点击全选再点击反选再点击其中的checkboxview就会发现BUG了 哈哈这个bug我去年就发现了百度搜到的第二个就是转载我的 支持下,android的bug多了去了。 扶松柏的《Android开发从入门到精通》视屏教程奉献给大家 listview 获得每行中的EditText值的问题 想学安卓系统, 是不是需要先买个小米手机做测试? android2.2开发时在eclipse的file explorer视图中不显示手机的sdcard信息 如何查看android手机硬件基本信息 谁能帮忙解释下 ACTION_MOVE 里的一些问题 安卓程序运行问题 android theme的开发 如何在代码中使用TabHost实现选项卡在屏幕下方的效果?效果如下 SDK更新问题?求助!!! 一个关于动画的问题,大家进来看看 如何在电脑上玩Iphone游戏?
或者在xml中给ListView设置这个属性 android:cacheColorHint="#00000000"
<?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">
<Button android:text="对话框中是复选列表" android:id="@+id/button5"
android:layout_width="wrap_content" android:layout_height="wrap_content"></Button></LinearLayout>
Main.java代码如下:
package wrongDialogListView.test.run;import java.lang.reflect.Field;import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnMultiChoiceClickListener;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.CheckedTextView;
import android.widget.ListView;public class Main extends Activity {
private Button button5; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); // //////////////////// button5 = (Button) this.findViewById(R.id.button5);
button5.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) { final String[] userInfoArray = new String[] { "我是A", "我是B",
"我是C", "我是D" }; final AlertDialog adRef = new AlertDialog.Builder(Main.this)
.setMultiChoiceItems(userInfoArray,
new boolean[] { true, false, true, false },
new OnMultiChoiceClickListener() {
public void onClick(DialogInterface arg0,
int arg1, boolean arg2) {
Log.v("zzzzzzzzzzzz", "" + arg1 + " "
+ arg2);
}
}).create(); adRef.setButton("全选", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) { ListView lv = adRef.getListView(); for (int i = 0; i < lv.getCount(); i++) {
lv.setItemChecked(i, true);
} try {
Field field = adRef.getClass().getSuperclass()
.getDeclaredField("mShowing");
field.setAccessible(true);
// 将mShowing变量设为false,表示对话框已关闭
field.set(adRef, false);
adRef.dismiss();
} catch (Exception e) { }
}
}); adRef.setButton3("反选", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) { ListView lv = adRef.getListView(); for (int i = 0; i < lv.getCount(); i++) {
View view = lv.getChildAt(i); if (view instanceof CheckedTextView) {
((CheckedTextView) view).toggle(); }
} try {
Field field = adRef.getClass().getSuperclass()
.getDeclaredField("mShowing");
field.setAccessible(true);
// 将mShowing变量设为false,表示对话框已关闭
field.set(adRef, false);
adRef.dismiss();
} catch (Exception e) { } }
});
adRef.setButton2("确定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) { ListView lv = adRef.getListView(); for (int i = 0; i < lv.getCount(); i++) {
if (lv.getCheckedItemPositions().get(i)) {
Log.v("多选选中了:", ""
+ lv.getAdapter().getItemId(i) + " "
+ lv.getAdapter().getItem(i));
}
} try {
Field field = adRef.getClass().getSuperclass()
.getDeclaredField("mShowing");
field.setAccessible(true);
// 将mShowing变量设为false,表示对话框已关闭
field.set(adRef, true);
adRef.dismiss();
} catch (Exception e) { }
}
}); adRef.show(); } });
}
}大家可以运行一下,点击全选再点击反选再点击其中的checkboxview就会发现BUG了
这个bug我去年就发现了
百度搜到的第二个就是转载我的