2013-08-22 46 views
-1

我有一個ListView與一些CheckBoxes。當我點擊ListView的每一行時,我想將CheckBox的文本保存在String中。複選框文本不被檢索

我將ListView行設置爲不可聚焦,以便用戶可以單擊CheckBox本身。 CheckBox不能被用戶自己選中或取消選中,而是當用戶點擊它時,他會導致另一個他需要輸入數據的活動。我正在通過返回一個布爾值來檢查用戶是否正在輸入數據。

如果該值爲true,則需要將該複選框設置爲選中狀態。爲了做到這一點,我需要在實際檢查之前將CheckBox的文本與另一個字符串值進行比較。

換句話說,每個CheckBox的檢查狀態由用戶是否在前一個活動中輸入數據確定。

什麼我不能做的是從被點擊獲取複選框文字/感動/選擇CheckBox

爲什麼下面的代碼片段不工作?運行此代碼後clickedError爲空。

@Override 
    public void onClick(final View v) 
    { 
     CheckBox cb = (CheckBox) v.findViewById(R.id.chkSelected); 
     clickedError = cb.getText().toString() ; 

@Override 
public void onClick(final View v) 
{ 
    CheckBox cb = (CheckBox) v; 
    clickedError = cb.getText().toString() ; 
} 

已經嘗試過

@Override 
public View getView(int position, View convertView, ViewGroup parent) 
{ 
     ...... 
     holder.chk.setOnClickListener(new MyClickListener(holder.chk)); 
     ...... 
} 


private class MyClickListener implements OnClickListener 
{ 
    CheckBox checkbox = null; 

    public MyClickListener(CheckBox cb) 
    { 
     checkbox = cb; 
    } 
    @Override 
    public void onClick(final View v) 
    { 
//   CheckBox cb = new CheckBox(mContext); 
//   cb = (CheckBox) v; 
//   clickedError = cb.getText().toString() ; 

     CheckBox cb = (CheckBox) v.findViewById(R.id.chkSelected); 
     clickedError = cb.getText().toString() ; 

感謝。

+0

http://stackoverflow.com/questions/18162931/android-get-selected-item-using-checkbox-in-listview-when-i-click-a-button/18164177#18164177。不知道我是否明確瞭解您的要求 – Raghunandan

+0

不是很清楚 - 您想要返回哪些文本?列表視圖項目數據或複選框狀態? – Slartibartfast

+0

確認您在onClick中獲得哪種類型的「視圖」(最終視圖v)。它是你期望的CheckBox嗎? – binaryKarmic

回答

1

使用

ListView.onListItemClick(ListView parent, View row, int position, long id); 

以獲得列表中CheckBox的參考。

+1

這給了我一些麻煩,但解決了這個問題。謝謝。 – ClaireG

+0

快樂是我的全部。我只是放下參考文獻並留下實施供您嘗試。我很高興你解決了它。 –

0
@Override 
    public void onClick(final View v) 
    { 
     CheckBox cb = (CheckBox) v; 
     clickedError = cb.getText().toString() ; 
    } 

試試這個。

編輯: 在你的新代碼什麼是你想用這個

@Override 
public View getView(int position, View convertView, ViewGroup parent) 
{ 
     ...... 
     holder.chk.setOnClickListener(new MyClickListener(holder.chk)); 
     ...... 
} 

做不能你做這樣的例如:

@Override 
public View getView(int position, View convertView, ViewGroup parent) 
{ 
     ...... 
     holder.chk.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      CheckBox cb = (CheckBox) v; 
      clickedError = cb.getText().toString() ; 
     } 
     }); 
     ...... 
} 
+0

已經嘗試過。它不工作 – ClaireG

+0

你在這條線上做什麼? holder.chk.setOnClickListener(新的MyClickListener(holder.chk)); – Siddhesh

+0

@編輯如果我這樣做,無論我選擇哪一個,列表中的最後一項都會被檢查。這就是爲什麼我爲OnClickListener創建了一個單獨的類,因此我可以相應地引用「CheckBox」。 – ClaireG