从 SQLite 数据库获取数据到自定义卡片 GridView(库:Gabrielemariotti)
Fetching data from SQLite Database to Custom Card GridView( Library: Gabrielemariotti)
我正在使用这个卡片库https://github.com/gabrielemariotti/cardslib。我已经实现了自定义 cardgridcursoradapter 并在此 class 的构造函数中传递了光标。
这是我的自定义 cardgridcursoradapter class.
class CustCursorAdapter extends CardGridCursorAdapter{
public CustCursorAdapter(Context context, Cursor c, boolean autoRequery) {
super(context, c, autoRequery);
}
@Override
protected Card getCardFromCursor(Cursor cursor) {
MyCard card = new MyCard(super.getContext());
return card;
}
}
这不是显示卡片网格视图。我错过了什么吗?
嘿,我的朋友,你所做的一切都是正确的,但正如你所说的,它是自定义卡片网格视图,你需要 return 一个视图与你的卡片。
这意味着您的适配器 class 需要覆盖 newview 和 bindview 方法。像这样。
class CustCursorAdapter extends CardGridCursorAdapter{
public CustCursorAdapter(Context context, Cursor c, boolean autoRequery) {
super(context, c, autoRequery);
}
@Override
protected Card getCardFromCursor(Cursor cursor) {
MyCard card = new MyCard(super.getContext());
return card;
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
return LayoutInflater.from(context).inflate(R.layout.card_grid_item, parent, false);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
super.bindView(view, context, cursor);
TextView id = (TextView) view.findViewById(R.id.id);
TextView name = (TextView) view.findViewById(R.id.name);
TextView username = (TextView) view.findViewById(R.id.username);
TextView password = (TextView) view.findViewById(R.id.password);
Integer cursor_id= cursor.getInt(cursor.getColumnIndexOrThrow("_id"));
String cursor_name=cursor.getString(cursor.getColumnIndexOrThrow("Name"));
String cursor_username=cursor.getString(cursor.getColumnIndexOrThrow("Username"));
String cursor_password=cursor.getString(cursor.getColumnIndexOrThrow("Password"));
id.setText(String.valueOf(cursor_id));
name.setText(cursor_name);
username.setText(cursor_username);
password.setText(cursor_password);
}
}
像这样更新了您的适配器子class。
(记得更新 mycard class 布局和 java 文件。)
我正在使用这个卡片库https://github.com/gabrielemariotti/cardslib。我已经实现了自定义 cardgridcursoradapter 并在此 class 的构造函数中传递了光标。 这是我的自定义 cardgridcursoradapter class.
class CustCursorAdapter extends CardGridCursorAdapter{
public CustCursorAdapter(Context context, Cursor c, boolean autoRequery) {
super(context, c, autoRequery);
}
@Override
protected Card getCardFromCursor(Cursor cursor) {
MyCard card = new MyCard(super.getContext());
return card;
}
}
这不是显示卡片网格视图。我错过了什么吗?
嘿,我的朋友,你所做的一切都是正确的,但正如你所说的,它是自定义卡片网格视图,你需要 return 一个视图与你的卡片。 这意味着您的适配器 class 需要覆盖 newview 和 bindview 方法。像这样。
class CustCursorAdapter extends CardGridCursorAdapter{
public CustCursorAdapter(Context context, Cursor c, boolean autoRequery) {
super(context, c, autoRequery);
}
@Override
protected Card getCardFromCursor(Cursor cursor) {
MyCard card = new MyCard(super.getContext());
return card;
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
return LayoutInflater.from(context).inflate(R.layout.card_grid_item, parent, false);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
super.bindView(view, context, cursor);
TextView id = (TextView) view.findViewById(R.id.id);
TextView name = (TextView) view.findViewById(R.id.name);
TextView username = (TextView) view.findViewById(R.id.username);
TextView password = (TextView) view.findViewById(R.id.password);
Integer cursor_id= cursor.getInt(cursor.getColumnIndexOrThrow("_id"));
String cursor_name=cursor.getString(cursor.getColumnIndexOrThrow("Name"));
String cursor_username=cursor.getString(cursor.getColumnIndexOrThrow("Username"));
String cursor_password=cursor.getString(cursor.getColumnIndexOrThrow("Password"));
id.setText(String.valueOf(cursor_id));
name.setText(cursor_name);
username.setText(cursor_username);
password.setText(cursor_password);
}
}
像这样更新了您的适配器子class。 (记得更新 mycard class 布局和 java 文件。)