2016-01-24 38 views
0

複選框的我有一個具有以下屬性的「ChecklistItem」類:如何找到類被點擊

private CheckBox checkBox; 
private ImageButton noteButton; 
private TextView vitalField; 

我有我的複選框的onClick Listener。現在的問題是,當我點擊該複選框並調用OnClick()方法時,如何才能確定該複選框屬於哪個ChecklistItem?

每當我點擊一個複選框,我想添加ChecklistItem複選框是數組的一部分,但OnClick()只知道調用它的複選框。

我該如何解決這個問題?

+0

讓我得到這個直,當你點擊一個複選框,應該增加一個項目到另一個陣列,是什麼呢?串?它是獨特的嗎?在你的問題中,你說過如何找到班級,你在這裏的「班級」是什麼意思? –

+0

每個複選框都是ChecklistItem類的成員。該類有幾個其他屬性,我需要訪問一旦複選框對象已被點擊。例如,如果單擊ChecklistItem.checkbox,我想要訪問該ChecklistItem的其他屬性。 – Brejuro

+0

您是從代碼還是XML初始化您的複選框,然後將它們分配給此類實例?如果你發佈了,你最好如何鏈接它們 –

回答

0

好了,所以這個答案是根據「長時間的討論」我們有

讓我們假設你想一個 - 再使用 - 視圖列表中,你編寫了一個名爲LIST_ITEM一個單獨的XML佈局文件,如下:

<CheckBox 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/checkbox"/> 
<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/text_view"/> 

所以現在讓我們假設你在活動或片段或任何你想要託管您的看法,現在我必須指出,這只是一個例子,通常一個列表視圖是你需要什麼這種情況下,但我又很少有關於你的應用程序的細節,所以我要保持簡單

假設你有一個垂直的線性佈局,要將這些「行」添加到它,每一行代表自定義視圖

LinearLayout layout = findViewById(R.id.layout); 
    LayoutInflater inflater = LayoutInflater.from(this); // This inflater is responsible of creating instances of your view 
    View myView = inflater.inflate(R.layout.list_item, layout, false); // This view objects is the view you made in your xml file 
    CheckBox checkBox = (CheckBox) myView.findViewById(R.id.checkbox); 
    TextView textView = (TextView) myView.findViewById(R.id.text_view); 
    checkBox.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //if checkbox is checked enable textview for example 
      // here you have a reference to all the views you just created 
      // Weather you want to save them in a class together that's up to you and your app's logic 
     } 
    }); 
    layout.addView((myView)); 

如果列表可能超過您可能希望在屏幕高度的一個將您的線性佈局封裝在滾動視圖中。

順便說一句:ListView只是一個簡單的方法,通過定義你想要每行顯示的方式來自動完成這個操作,當然它會爲你管理你的視圖並在屏幕顯示時回收它們,但我只想指出出了這個概念。

希望這有助於你