2017-11-25 246 views
0

我生成了一個表格,每一行末尾都有複選框。如果在該行中選中該複選框,我想對特定行中的所有值進行求和。因此,我需要檢查該特定行中的複選框是否被選中。到目前爲止,我有這樣的:如何檢查特定行中是否選中複選框?

btnCalculate.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     try { 
      int sum = 0; 
      for(int i=0; i<rowNumber; i++) { 
       if(cb.isChecked()) { 
        sum = sum + rowSums[i]; 
       } 
      } 
      txtResult.setText(String.valueOf(sum)); 
     } catch (Exception e) { } 
    } 
}); 

通常情況下,我可以訪問withing行中的所有單元格的值,我能總結所有這些值的行內。但是,當我在總和內添加if語句時,我總是得到0.我知道問題是什麼。我知道我必須檢查複選框是否在特定行中被選中。但我不知道該怎麼做。 順便說一下,我還設置了行內每個複選框的ID。例如,第一行復選框的ID爲0,第二行爲1,依此類推。所以我只需訪問特定的複選框並檢查它是否被選中。

EDIT(解決) 我存儲在CheckBox陣列內的每個複選框。然後在我的循環中,我調用了特定的CheckBox,它工作正常。

private CheckBox cb; 
private CheckBox [] cbs; 

在for循環:

cbs[i] = cb; 

我的for循環:

for(int i=0; i<rowNumber; i++) { 
    if(cbs[i].isChecked()) { 
     sum = sum + rowSums[i]; 
    } 
} 
+0

請勿對您的視圖使用id = 0,因爲這意味着Android的「無身份證」。 – Ridcully

+0

哦,謝謝你的提示。我現在要改變它。我只是尋找一種方法喜歡抓住具體的複選框與複選框的ID – rawsly

回答

1

,這樣,當任何複選框被選中,您可以創建複選框監聽器/選中添加/刪除相應的數據進行計算。

OR:

你可以給所有的複選框的IDS,然後將IDS保存在類像一個數組:

//as a class attribute 
    Int[]checkboxesIds = new array[] {ids in xml}; 
    //in the loop 
    CheckBox ch = findViewById(ids[i]) 
    ch.ischecked(); 

但其錯誤的大數據。

+0

實際上, 'CheckBox ch = findViewById(ids [i])' 部分可以爲我工作,但我仍然不知道如何獲得該特定行中的複選框。我看起來像 'cb.getCheckbox(id)' 它選擇我需要的複選框。 – rawsly

+0

你用過tableview嗎?是如此嘗試使用此:https://stackoverflow.com/questions/30191264/javafx-tableview-how-to-get-the-row-i-clicked –

相關問題