2017-06-16 267 views
0

我想取消選中onItemClickListener上的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); 
      } 
     } 

回答

0

您每次按下某個項目時都勾選複選框? @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,假)的任何地方

+0

請你告訴我,我應該在哪裏,就把這行? – Dev

+0

在你想取消勾選複選框的地方,我猜 –

+0

我只能在Itemclick上取消選中它...我試過這樣... for(int j = 0; j <= position; j ++){//列表查看.setItemChecked(I,TRUE); listView.setItemChecked(j,false); }但它沒有工作 – Dev

相關問題