0

すべての行に TextView と Checkbox を持つ ListView があります。ユーザーが最初の行のチェックボックスをクリックして次の行を有効にし、グレー表示された効果を削除する必要があるシーケンスを作成しようとしています。この行のチェックボックスをクリックすると、次の行にも同じことが行われます。

これは可能ですか?そしてどうやって?

4

1 に答える 1

1

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);
    }
}

幸運を!

于 2012-08-22T08:37:45.843 に答える