すべての行に TextView と Checkbox を持つ ListView があります。ユーザーが最初の行のチェックボックスをクリックして次の行を有効にし、グレー表示された効果を削除する必要があるシーケンスを作成しようとしています。この行のチェックボックスをクリックすると、次の行にも同じことが行われます。
これは可能ですか?そしてどうやって?
Object
行の状態を維持するカスタムを作成します。例えば:
class Row {
private TextView text;
private CheckBox box;
private boolean grayedOut;
//implementation...
}
内部でActivity
を作成し、ArrayList<Row>()
それをソースとして の に渡しAdapter
ますListView
。
onCreate(..){
mArrayList = new ArrayList<Row>();
// fill arraylist
Adapter mAdapter = new CustomAdapter(... , ... , mArrayList);
ListView lv = findView..
lv.setAdapter(mAdapter);
}
Adapter
あなたの為のListView
カスタムです。ここにある例に従うことができます。あなたの場合、いくつかの調整は次のようになります。
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
あり、リスト内の各項目Row
に対して、特定の状態を提供する があります。デフォルトでは、最初の項目を除いてすべての状態がグレー状態に設定されます。を使用してonItemClickedListener
、他のアイテムのロックを解除できます..
lv.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> parent, View v, int position, Long id){
// do stuff...
mArrayList.get(position+1).setGrayedOut(false);
}
}
幸運を!