我正在尝试习惯使用自定义内容提供商。我已经成功地编写了一个非常简单的应用程序,只需按一个按钮就可以使用自定义内容提供程序将字符串添加到sqlite数据库。然后,这些数据库条目将显示在同一活动的ListView中。
我试图将ListView中的项目数量限制为5,但由于我缺乏经验,我不知道如何继续。
这就是我用来填充ListView
的内容private void fillData() {
String[] from = new String[]{commentsTable.COLUMN_COMMENT, commentsTable.COLUMN_ID};
int[] to = new int[]{android.R.id.text1, android.R.id.text2};
getLoaderManager().initLoader(0, null, this);
adapter = new SimpleCursorAdapter(this, android.R.layout.two_line_list_item, null, from, to, 0);
setListAdapter(adapter);
}
我按照本教程http://www.vogella.com/tutorials/AndroidSQLite/article.html#tutorial-sqlite-custom-contentprovider-and-loader编写了一个与教程中的应用程序类似的应用程序。
我尝试使用Cursor
代替null
但由于方法java.lang.NullPointerException
而导致.getWritableDatabase()
错误。
答案 0 :(得分:0)
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1471613026000",
"Effect": "Allow",
"Action": [
"ec2:ModifyInstanceAttribute"
],
"Resource": [
"*"
]
}
]
}
有方法CursorAdapter
。你可以像这样在你的班级实现它。
getCount()
因此,您需要继承public int getCount() {
int superCount = super.getCount();
return Math.min(superCount, 5);
}
并重新定义方法SimpleCursorAdapter
。
创建这个课程
getCursor()
在您的代码中将public class CustomCursorAdapter extends SimpleCursorAdapter {
public CustomCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to, int flags) {
super(context, layout, c, from, to, flags);
}
@Override
public int getCount() {
int superCount = super.getCount();
return Math.min(superCount, 5);
}
}
更改为SimpleCursorAdapter
CustomCursorAdapter
答案 1 :(得分:0)
经过一番研究,我设法解决了这个问题,并认为我会为遇到这个问题的人发布答案。
在我的customContentProvider类中,我添加了变量:
public static final String QUERY_PARAMETER_LIMIT = "limit";
public static final String QUERY_PARAMETER_OFFSET = "offset";
然后编辑查询方法以包括:
public Cursor query(Uri uri, ...) {
String limit = uri.getQueryParameter(QUERY_PARAMETER_LIMIT);
String offset = uri.getQueryParameter(QUERY_PARAMETER_OFFSET);
SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder();
// ...
Cursor c = qb.query(db, projection, selection, selectionArgs, null, null, sortOrder, limitString);
//...
return c;
}
然后在获取光标时只需使用Uri
Uri CONTENT_URI = customContentProvider.CONTENT_URI.buildUpon()
.appendQueryParameter(customContentProvider.QUERY_PARAMETER_LIMIT,
String.valueOf(limit))
.appendQueryParameter(customContentProvider.QUERY_PARAMETER_OFFSET,
String.valueOf(offset))
.build();
<强>参考强>: