我正在编写一个相当复杂的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
的数据。我觉得必须有更好的方法来设计应用程序。
答案 0 :(得分:0)
从API演示中获得提示 - 特别是EfficientAdapter
,我已将CursorAdapter
sublcass声明为我活动的内部类。
这可以避免将待处理的意图传递到主要活动之外。