0
我在每一行都有一個帶有TextView和複選框的ListView。我試圖創建一個序列,用戶必須點擊第一行的複選框才能啓用下一行並刪除灰顯效果。點擊該行中的複選框將對下一行執行相同的操作,依此類推。通過當前行中的複選框在ListView中啓用下一行
這可能嗎?如何?
我在每一行都有一個帶有TextView和複選框的ListView。我試圖創建一個序列,用戶必須點擊第一行的複選框才能啓用下一行並刪除灰顯效果。點擊該行中的複選框將對下一行執行相同的操作,依此類推。通過當前行中的複選框在ListView中啓用下一行
這可能嗎?如何?
創建自定義Object
以保持行的狀態。例如:
class Row {
private TextView text;
private CheckBox box;
private boolean grayedOut;
//implementation...
}
裏面你Activity
你作出ArrayList<Row>()
,並把它作爲源到你ListView
的Adapter
。
onCreate(..){
mArrayList = new ArrayList<Row>();
// fill arraylist
Adapter mAdapter = new CustomAdapter(... , ... , mArrayList);
ListView lv = findView..
lv.setAdapter(mAdapter);
}
的Adapter
您ListView
是定製的。您可以按照發現的示例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);
}
}
祝你好運!
令人驚歎!我會立即着手它。 – iJar
當我的ListView數據通過SimpleAdapter進入時,我應該如何處理自定義適配器? SimpleAdapter中數據的數組結構是ArrayList>。 –
iJar
不要使用SimpleAdapter :) – DroidBender