将变量传递到Android中的游标适配器的bindview

时间:2016-04-07 06:37:22

标签: android sqlite listview android-cursoradapter

我有一个游标适配器来根据查询填充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中查询的类型来控制布局?

1 个答案:

答案 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。