2012-08-22 43 views
0

我在每一行都有一個帶有TextView和複選框的ListView。我試圖創建一個序列,用戶必須點擊第一行的複選框才能啓用下一行並刪除灰顯效果。點擊該行中的複選框將對下一行執行相同的操作,依此類推。通過當前行中的複選框在ListView中啓用下一行

這可能嗎?如何?

回答

1

創建自定義Object以保持行的狀態。例如:

class Row { 
    private TextView text; 
    private CheckBox box; 
    private boolean grayedOut; 

    //implementation... 
} 

裏面你Activity你作出ArrayList<Row>(),並把它作爲源到你ListViewAdapter

onCreate(..){ 
    mArrayList = new ArrayList<Row>(); 
    // fill arraylist 
    Adapter mAdapter = new CustomAdapter(... , ... , mArrayList); 
    ListView lv = findView.. 
    lv.setAdapter(mAdapter); 
} 

AdapterListView是定製的。您可以按照發現的示例here。在你的情況下,一些調整將如下:

public class CustomAdapter extends ArrayAdapter<Row>{ 

    public CustomAdapter(...) { 
     // do stuff 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // .... 

     if (item at position has gray state){ 
      set layout to gray 
     } else { 
      set layout to active 
     } 

     // .... 
     return row; 
    } 

現在我們有一個Listview,一個CustomAdapter和列表中的每個項目,我們有一個它提供了一定的狀態。默認情況下,除第一項外,所有狀態都將設置爲灰色狀態。使用onItemClickedListener,我們可以解鎖其他物品..

lv.setOnItemClickListener(new OnItemClickListener(){ 
    public void onItemClick(AdapterView<?> parent, View v, int position, Long id){   
     // do stuff... 
     mArrayList.get(position+1).setGrayedOut(false); 
    } 
} 

祝你好運!

+0

令人驚歎!我會立即着手它。 – iJar

+0

當我的ListView數據通過SimpleAdapter進入時,我應該如何處理自定義適配器? SimpleAdapter中數據的數組結構是ArrayList >。 – iJar

+0

不要使用SimpleAdapter :) – DroidBender

相關問題