【问题标题】:How to uncheck a checkbox in array adapter如何取消选中阵列适配器中的复选框
【发布时间】:2017-06-16 08:03:18
【问题描述】:

我正在尝试取消选中 onItemClickListener 上的列表视图数组适配器中的复选框。 它一直处于选中状态。如果我再次单击它以取消选中它并没有被选中。 有人可以在这里建议我怎么做吗?

 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);
            }
        }

【问题讨论】:

    标签: android listview checkbox android-arrayadapter


    【解决方案1】:

    您每次按下某个项目时都会选中复选框? @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); } }

    我在任何地方都没有看到 setItemChecked(i,false)

    【讨论】:

    • 你能告诉我应该把这条线放在哪里吗??
    • 在你想取消选中复选框的地方我猜
    • 我只需要在Itemclick上取消选中它...我已经尝试过这样...for (int j=0; j
    • 只是为了确保您要取消选中所有列表复选框?
    • 让我们说有 4 个复选框,如果从最后一个(即 4)取消选中它应该只取消选中单击的项目。但是如果在 2 之间取消选中,那么它将取消选中所有来自 2.(即:2,3&4)的框。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2014-08-01
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多