我有一个游标适配器来根据查询填充listview,我想通过在适配器中传递一个变量来控制listview的布局我做了以下
public class QueryCursorAdapter extends CursorAdapter{
View retView;
private DBHelper mHelper;
public QueryCursorAdapter(Context context, Cursor c,int QCase) {
super(context, c, QCase);
}
不应该将变量放在bindview中,如
public void bindView(View view, Context context, Cursor cursor,int qcase)
为什么它说我需要将类声明为抽象?
有没有其他方法可以根据我在sqlite中查询的类型来控制布局?
答案 0 :(得分:2)
看一下bindView方法 - 它只需要3个定义的参数。
当您说出您的课程extends CursorAdapter
时,您应该实施此方法,因为它在abstract
中声明为CursorAdapter
。
因此,您应该在bindView
的实现中仅放入这3个参数。当您放置第4个参数时,系统认为它不是基本方法的实现,但它是您自己的方法。
这就是为什么你得到关于将类声明为abstract
的消息,因为你没有实现基本抽象方法。
您可以将所需的参数传递给构造函数(就像现在一样)并将其保存到类的对应字段中。
然后,在bindView
方法中,您可以根据需要使用此字段。
更新。此外,您可以根据需要使用尽可能多的参数 - 只需创建自己的构造函数,例如CursorAdapter(Context context, Cursor c, param1, param2 ... paramN)
,在其中不要忘记调用基础构造函数{ {1}}。将您的参数保存到类字段中,然后根据需要在CursorAdapter(Context context, Cursor c)
和其他方法中使用它们。
Upd2。代码示例:
bindView
然后您可以在适配器的任何位置使用这些myParam1-2-3。