1

私はかなり複雑な を書いていますがListView、これには(とりわけ)各リスト項目のビューのフォーマットが必要です。

ビューが各リスト項目にどのようにバインドされるかを完全に制御できるようにするために、次のCursorAdapter方法でサブクラス化しました。

public class MyAdapter extends CursorAdapter {

    public final LayoutInflater mInflater;

    public MyAdapter(Context context, Cursor c) {
        super(context, c);
        mInflater = LayoutInflater.from(context);
    }

    @Override
    public void bindView(View view, Context context, Cursor cursor) {
        final ToggleButton tButton = (ToggleButton) view.findViewById(R.id.tbutton);
        tButton.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                // start activity based on a pending intent
            }
        });     

    }
}

問題は、ToggleButtonクリック リスナーが保留中のインテントに基づいてアクティビティを開始する必要があることです。保留中のインテントは、このカスタマイズされたアダプターを利用するアクティビティでインスタンス化されます。

SimpleCursorAdapterメインActivityで a を a とともに使用できることを認識しているViewBinderため、インテントの起動はメインからのみ必要になりActivityます。しかし、SimpleCursorAdapter列をビューに直接マップしていないため、正しくありません。

Activityただし、ここでの代替手段は、カーソル サブクラスからmain のデータにアクセスすることを提案します。アプリケーションを設計するためのより良い方法があるに違いないと感じています。

4

1 に答える 1

0

API Demos からヒントを得て、具体的には、 sublcass をアクティビティの内部クラスとしてEfficientAdapter宣言しました。CursorAdapter

これにより、保留中のインテントがメイン アクティビティの外に渡されるのを回避できます。

ソース: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List14.html

于 2011-11-17T22:04:12.223 に答える