访问CursorAdapter子类中的活动状态

时间:2011-11-16 23:18:41

标签: android android-listview simplecursoradapter android-cursoradapter

我正在编写一个相当复杂的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 ViewBinder,因此只需要从主Activity启动意图。但SimpleCursorAdapter并不完全正确,因为我没有将列直接映射到视图。

但是,我在这里的替代方案是建议从游标子类访问主Activity的数据。我觉得必须有更好的方法来设计应用程序。

1 个答案:

答案 0 :(得分:0)

从API演示中获得提示 - 特别是EfficientAdapter,我已将CursorAdapter sublcass声明为我活动的内部类。

这可以避免将待处理的意图传递到主要活动之外。

来源:http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List14.html