Android 如何取消选中阵列适配器中的复选框

Android 如何取消选中阵列适配器中的复选框,android,listview,checkbox,android-arrayadapter,Android,Listview,Checkbox,Android Arrayadapter,我正在尝试取消选中侦听器上listview数组适配器中的复选框。 它一直处于选中状态。如果我再次单击它取消选中,它不会被取消选中。 这里有人能告诉我怎么做吗 pagesresult = new JSONArray(getIntent().getStringExtra("pageResult")); for (int i = 0; i < pagesresult.length(); i++) { JSONObject

我正在尝试取消选中侦听器上listview数组适配器中的复选框。 它一直处于选中状态。如果我再次单击它取消选中,它不会被取消选中。 这里有人能告诉我怎么做吗

 pagesresult = new JSONArray(getIntent().getStringExtra("pageResult"));
                for (int i = 0; i < pagesresult.length(); i++) {
                    JSONObject json = pagesresult.getJSONObject(i);
                    Iterator<String> keys = json.keys();

                    while (keys.hasNext()) {
                        key = keys.next();
                        //pageValue = );
                        pageKeyArray.add(key);
                        pageArray.add(String.valueOf(json.get(key)));
                        System.out.println("Key :" + key + "  Value :" + json.get(key));
                        Log.d(TAG, "pageKeyArray Check :" + pageKeyArray);
                        Log.d(TAG, "currentKey Check :" + pageArray);
                    }

                }

                alreadyBookedByUser = new JSONArray(getIntent().getStringExtra("alreadyBookedByUser"));
                Log.d(TAG, "compositionCount Check :" + pagesresult);
                Log.d(TAG, "compositionCount Check :" + alreadyBookedByUser);
            } catch (JSONException e) {
                e.printStackTrace();
            }
            done = (Button) findViewById(R.id.done);
            findViewsById();
            adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice,pageArray);
            listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
            listView.setAdapter(adapter);

            listView.setOnItemClickListener(this);
     @Override
        public void onClick(View v) {
            if (v == done) {

                SparseBooleanArray checked = listView.getCheckedItemPositions();

                ArrayList<String> selectedItems = new ArrayList<String>();

                for (int i = 0; i < checked.size(); i++) {
                    // Item position in adapter

                    position = checked.keyAt(i);
                    listView.setItemChecked(position, true);
                    Log.d(TAG, "Position check :" + position);
                    // Add sport if it is checked i.e.) == TRUE!

                    if (checked.valueAt(i)) {
                        selectedItems.add(adapter.getItem(position));

                    }
                }
                Log.d(TAG, "Page key array show :" + this.pageKeyArray);
                Log.d(TAG, "selectedItems show :" + selectedItems);

                int max = -1;
                for(String value: selectedItems) {
                    int selectedIndex= this.pageArray.indexOf(value);
                    this.selectedPageIems.add(this.pageKeyArray.get(selectedIndex));
                    if(selectedIndex > max) {
                        max = selectedIndex;
                    }
                }
                String firstPageNumber = getFirstPageNumber(this.pageKeyArray.get(0));
                String currentPageNumber = firstPageNumber;
                String lastPageNumber = getLastPageNumber(this.pageKeyArray.get(max));
                Log.d(TAG, "First Page Number :" + firstPageNumber);
                Log.d(TAG, "Last Page Number :" + lastPageNumber);
                Log.d(TAG, "selectedPageIndexes show :" + selectedPageIndexes);
                Log.d(TAG, "selectedPageIems show :" + selectedPageIems);

                String[] outputStrArr = new String[selectedItems.size()];

                for (int i = 0; i < selectedItems.size(); i++) {
                    outputStrArr[i] = selectedItems.get(i);
                }
                try {
                    selectPages();
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                Intent intent = new Intent(getApplicationContext(),MyBookings.class);
                session.setPageNumbers(firstPageNumber,currentPageNumber,lastPageNumber);
                startActivity(intent);
            }
        }

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Log.d(TAG, "First Page Number :" + position);
            for (int i=0; i<=position; i++){
                listView.setItemChecked(i,true);
            }
        }
pagesresult=newjsonarray(getIntent().getStringExtra(“pageResult”);
对于(int i=0;i最大值){
max=所选索引;
}
}
字符串firstPageNumber=getFirstPageNumber(this.pageKeyArray.get(0));
字符串currentPageNumber=firstPageNumber;
字符串lastPageNumber=getLastPageNumber(this.pageKeyArray.get(max));
Log.d(标签“首页编号:”+首页编号);
Log.d(标签,“最后一页编号:”+lastPageNumber);
Log.d(标记“selectedPageIndexes show:”+selectedPageIndexes);
Log.d(标记“selectedPageIems show:”+selectedPageIems);
String[]outputStrArr=新字符串[selectedItems.size()];
对于(int i=0;i对于(int i=0;i您是否在每次按下项目时选中复选框?

@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
日志d(标签“首页编号:”+位置);

对于(int i=0;我能告诉我这一行应该放在哪里吗?在你想取消选中复选框的地方,我想我必须取消选中它。只需单击一下…我已经这样尝试过了…对于(int j=0;j只是为了确保这样做,你想取消选中所有列表复选框吗?假设有4个复选框,如果它从上一个开始被取消选中(即4)它应该只取消选中单击的项目。但是如果在这两个项目之间取消选中,比如说2,那么它将取消选中2中的所有框。(即:2、3和4)。