全选方法以选中listview中的所有复选框android不工作

全选方法以选中listview中的所有复选框android不工作,android,android-layout,android-listview,android-checkbox,Android,Android Layout,Android Listview,Android Checkbox,我有一个自定义适配器,可以在每个项目上用名称和复选框填充listview。现在,我在列表顶部添加了一个按钮,以启用“选择所有项目”,但不知何故,它不起作用,我无法确定我错在哪里。它也没有抛出任何错误。这是我的密码` send_show12.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { //

我有一个自定义适配器,可以在每个项目上用名称和复选框填充listview。现在,我在列表顶部添加了一个按钮,以启用“选择所有项目”,但不知何故,它不起作用,我无法确定我错在哪里。它也没有抛出任何错误。这是我的密码`

send_show12.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View view) {
    //              flag = !flag;
                    //lv = get
                    int size = lv.getCount();
                    `Log.d("This is count is at button listener", ""+size);

                    if(lv.isItemChecked(1)){
                        for(int i = 0; i<=size; i++){

                            lv.setItemChecked(i, true);
                        }
                    } else {
                        for(int i = 0; i<=size; i++){
                            lv.setItemChecked(i, false);
                        }
                    }
                }
            });`
send\u show12.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图){
//flag=!flag;
//lv=get
int size=lv.getCount();
`Log.d(“这是按钮侦听器处的计数,”+大小);
如果(第1级){

对于(int i=0;i您正在尝试检查表示项目的视图。您说您有一个复选框和一个文本,因此我假定它是一个LinearLayout。LinearLayout未实现可检查,因此您无法检查它

你可以实现LiearLayout的一个子类,它实现了Checkable(这并不有趣,而且我见过的大多数免费的网络解决方案要么是设计上的缺陷,要么是不完整的,以至于它们在所有情况下都无法工作),或者在循环中的LinearLayout中查找你的复选框

当您滚动带有复选框的listview时,项目的位置将更改,以便选中的项目可以取消选中,而未选中的项目可以被选中。这就是为什么所选列表项目不能正确显示。(您是否注意到此问题?) 要解决此问题,必须使用ArrayAdapter而不是baseAdapter。

代替PlanetActivity类,使用该类剩余的是相同的

公共类平面活动扩展活动{
私有ListView主ListView;
//私人行星[]行星;
ArrayList行星=新ArrayList();
专用阵列适配器列表适配器;
/**在首次创建活动时调用*/
@抑制警告(“未选中”)
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//查找ListView资源。
mainListView=(ListView)findViewById(R.id.listView1);
//点击项目时,切换复选框和的选中属性
//行星。
主列表视图
.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父项、视图项、,
内部位置,长id){
Planet Planet=listAdapter.getItem(位置);
planet.toggleChecked();
PlanetViewHolder=(PlanetViewHolder)项目
.getTag();
viewHolder.getCheckBox().setChecked(planet.isChecked());
}
});
按钮bt=(按钮)findViewById(R.id.yourbutton);
bt.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
行星;

对于(inti=1;i我使用HashMap跟踪所选项目的id

public class PlanetsActivity extends Activity {

private ListView mainListView;
//private Planet[] planets;
ArrayList<Planet> planets=new ArrayList<Planet>();
private ArrayAdapter<Planet> listAdapter;

/** Called when the activity is first created. */
@SuppressWarnings("unchecked")
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Find the ListView resource.
    mainListView = (ListView) findViewById(R.id.listView1);

    // When item is tapped, toggle checked properties of CheckBox and
    // Planet.

    mainListView
            .setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View item,
                        int position, long id) {
                    Planet planet = listAdapter.getItem(position);
                    planet.toggleChecked();
                    PlanetViewHolder viewHolder = (PlanetViewHolder) item
                            .getTag();
                    viewHolder.getCheckBox().setChecked(planet.isChecked());
                }
            });

    Button bt=(Button)findViewById(R.id.yourbutton);
    bt.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            planets.clear();
            for(int i=1;i<15;i++){
                planets.add(new Planet(""+i,true));
            }

            listAdapter = new PlanetArrayAdapter(this, planets);
            mainListView.setAdapter(listAdapter);
        }
    });

    planets.add(new Planet("1", false));
    planets.add(new Planet("2", false));
    planets.add(new Planet("3", false));
    planets.add(new Planet("4", false));
    planets.add(new Planet("5", false));
    planets.add(new Planet("6", false));
    planets.add(new Planet("7", false));
    planets.add(new Planet("8", false));
    planets.add(new Planet("9", false));
    planets.add(new Planet("10", false));
    planets.add(new Planet("11", false));
    planets.add(new Planet("12", false));
    planets.add(new Planet("13", false));
    planets.add(new Planet("14", false));


    listAdapter = new PlanetArrayAdapter(this, planets);
    mainListView.setAdapter(listAdapter);
}

public Object onRetainNonConfigurationInstance() {
    return planets;
}}