我SimpleCursorAdapter为我扩展的自定义适配器ListFragment无法正确显示数据库中的项目.它不会在TextView中显示文本,我还需要对光标做什么才能显示正确的文本?
我以为我必须覆盖bindView但没有效果
设置适配器:
public void populateList(){
String[] fields = new String[] {BowlersDB.NAME};
Cursor c = getActivity().getContentResolver().query(BowlersDB.CONTENT_URI,
new String[] {BowlersDB.ID,BowlersDB.NAME},null,null,BowlersDB.NAME + " COLLATE LOCALIZED ASC");
mAdapter = new CheckAdapter(getActivity(),R.layout.check_listview,c,fields,new int[] {R.id.nameCheckTV});
setListAdapter(mAdapter);
getLoaderManager().initLoader(0,null,this);
}
Run Code Online (Sandbox Code Playgroud)
适配器:
public class CheckAdapter extends SimpleCursorAdapter{
Context context;
Cursor c;
public CheckAdapter(Context context, int layout, Cursor c,String[] from, int[] to) {
super(context, layout, c, from, to);
this.context = context;
this.c = c;
// TODO Auto-generated constructor stub
}
@Override
public void …Run Code Online (Sandbox Code Playgroud) android android-listview android-cursor android-loadermanager android-cursoradapter
我正在使用游标从数据库中检索数据.我知道如何检索整个列以用于listviews等,但我很难找到一种方法来检索单个值.
假设我有一个包含两列("_id"和"Name")的表,我在该表中有十个记录(行).例如,我如何得到第三行中的名字?考虑到我定义了一个读取该表的游标:
public Cursor getMyNameInfo() {
SQLiteDatabase db = getReadableDatabase();
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
String sqlTables = "MyNames";
qb.setTables(sqlTables);
Cursor c = qb.query(db, null, null, null,
null, null, null);
c.moveToFirst();
return c;
}
Run Code Online (Sandbox Code Playgroud) 为什么我的Android光标不会一直走到最初的"承诺"的末尾?
我的cursor.getCount()与我上一次的cursor.getPosition()不同.检查我的while循环!这就是我用它做的一切!
注意:1.它是关于查询联系人内容提供者(android api> 5)2.我只显示基本代码
Cursor cursor = mContext.getContentResolver().query(mUri, mProjections, null, null, null);
Logger.d(TAG, "*** cursor.getCount(): "+cursor.getCount());
while (cursor.moveToNext()) {
Logger.d(TAG, "| position: "+cursor.getPosition());
processMainCursor(serializer, cursor);
}
cursor.close();
Run Code Online (Sandbox Code Playgroud)
processMainCursor()将显示来自游标的数据+执行另一个查询:一个4个电话,一个4个电子邮件,一个4个IM帐户:
void processMainCursor(XmlSerializer serializer, Cursor main_cursor) {
writeCursorData(serializer, main_cursor); //writes cursor data, column by column
writePhoneEntities(serializer, main_cursor);
writeEmailEntities(serializer, main_cursor);
writeIMEntities(serializer, main_cursor);
}
Run Code Online (Sandbox Code Playgroud)
在我的writeXXX方法中没有一个我关闭我的main_cursor或移动下一个!!! ..必须相信我...我只是做一个新的查询,打印数据并关闭该光标
所以统计:
我在这里搜索了一段时间没有任何帮助我.我想这很简单,我做的事情很愚蠢.所以,我有这个DataBaseHelper创建一个表并在其上放置两个值:
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "db";
public static final String PROPERTY = "property";
public static final String VALUE = "value";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE configs (property VARCHAR(15), value VARCHAR(10));");
ContentValues cv=new ContentValues();
cv.put(PROPERTY, "registered");
cv.put(VALUE, "true");
db.insert("configs", PROPERTY, cv);
cv.put(PROPERTY, "test");
cv.put(VALUE, "test");
db.insert("configs", PROPERTY, cv);
}
}
Run Code Online (Sandbox Code Playgroud)
在我的活动即时尝试:
@Override
public void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.register);
layout …Run Code Online (Sandbox Code Playgroud) 我在Android上有一个基于Google Map的应用程序.
简而言之,该应用程序的工作原理是:首先输入一些样本数据(包含纬度/经度对到数据库中),读取它们,最后在地图叠加层上绘制它们.
当我在Android 2.3.3(Gingerbread)模拟器以及我的HTC Desire S上运行它时,此应用程序正常工作.但是当我在Android 4.0.3(ICS)模拟器中尝试相同的应用程序时(在清单文件中进行更改后)对于sdk版本)Cursor Finalized without Prior Close()当我尝试执行活动时出错.使用NullPointer异常和应用程序崩溃.
StackTrace pastebin在这里
更新的方法
public int getAllEntries() {
//int entryCount;
Cursor cursorE = db.rawQuery("SELECT COUNT(LATS) FROM myPROmapData",
null);
try {
if (cursorE.moveToFirst()) {
return cursorE.getInt(0);
}
return cursorE.getInt(0);
} finally {
cursorE.close();
}
}
--
public Double[] PopulateLats() {
//id = getAllEntries();
int LatcolumnIndex = 0;
Cursor cursor = db.rawQuery("SELECT LATS FROM myPROmapData", null);
try {
Double myLats[] = new Double[cursor.getCount()];;
if (cursor.moveToFirst()) {
for (int …Run Code Online (Sandbox Code Playgroud) 我正在使用Cursor来获取存储在SQLite数据库中的一些数据。当我Cursor从数据库中获取一些数据时,代码可以正常工作。但是当Cursor不包含任何数据时,我得到了NullPointerExceptionat cursor.movetofirst()方法。我在其他地方使用过类似的代码,但movetofirst()方法在NullPointerException其他地方未给出。几天以来,我一直在尝试此操作,但无法确定问题出在哪里。请帮助。
public class Country extends Activity {
private DbAdapter mDb;
private Cursor mCurSugCnt;
String country=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.country);
mDb=new DbAdapter(this);
mDb.open();
country= this.getIntent().getExtras().getString("country");
fillSugCntData(country);
}
private void fillSugCntData(String cnt) {
//I have tried multiple methods. The problem occurs when there is no data returned by any of the methods called
//mCurSugCnt=mDb.fetchCatNotes("abc");
mCurSugCnt=mDb.fetchCntNotes(cnt);
//This is where I called the null …Run Code Online (Sandbox Code Playgroud) 目前我正在使用getContentResolver().query()/ managedQuery()来获取光标以从图库应用程序中检索图像.因为我正在使用的API部分弃用,所以我想将CursorLoader与LoaderManager一起使用.
/**
* Creates a cursor to access the content defined by the image uri for API
* version 11 and newer.
*
* @return The created cursor.
*/
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
private Cursor createCursorHoneycomb() {
String[] projection = {
MediaStore.Images.Media.DATA
};
Cursor cursor = getContentResolver().query(imageUri, projection, null, null, null);
return cursor;
}
/**
* Creates a cursor to access the content defined by the image uri from API
* version 8 to 10.
*
* @return The created cursor.
*/ …Run Code Online (Sandbox Code Playgroud) android android-cursor android-loadermanager android-cursorloader android-cursoradapter
我正在尝试调整HelloGridView示例,以便我可以显示存储在SD上的图像的图像缩略图,而不是res/drawable中的图像.我们的想法是首先在ImageView.initialize()函数中创建一个包含图像的列表,并使用它与示例中的完全一样.
我的光标出现问题,首先我尝试在Imageview.initialize()函数中将其设置为私有(它只是注释掉了,所以你可以看到我在哪里)因为对我来说它似乎只是被使用了然后我得到错误"在关闭后尝试访问游标".在行的onCreate()函数中
gridview.setAdapter(imageAdapter);
所以这条线显然以某种方式使用它.接下来的尝试是将光标设置为"全局"并在该行之后关闭它,但我得到相同的错误但现在当我离开onCreate()时.这就是现在代码的方式,我不知道该怎么做.此外,如果你发现其他任何看起来很奇怪的东西,请告诉我,因为我在android和java非常新.
package se.mmarks.hellogridview;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.Toast;
public class MainActivity extends Activity {
private Cursor imagecursor;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GridView gridview = (GridView) findViewById(R.id.gridview);
ImageAdapter imageAdapter = new ImageAdapter(this, imagecursor);
imagecursor = imageAdapter.initialize();
gridview.setAdapter(imageAdapter);
/* setAdapter needs the cursor,
* this is why it is closed …Run Code Online (Sandbox Code Playgroud) android adapter android-imageview android-gridview android-cursor
我正在尝试创建一个自定义联系人应用程序,它只显示那些具有Contact Number 的联系人。首先,有没有什么自动化的方法来做到这一点?假设不是,那么我正在尝试按名称搜索联系人,例如Rohan。
这是代码:-
Cursor photoCursor = getContentResolver().query(
android.provider.ContactsContract.Contacts.CONTENT_URI,
new String[] { ContactsContract.Contacts.PHOTO_ID,
ContactsContract.Contacts.DISPLAY_NAME },
ContactsContract.Contacts.DISPLAY_NAME + " = ?",
new String[]{"Rohan"}, null);
photoCursor.moveToFirst();
while (photoCursor.moveToNext()) {
Log.d("Photo Thumbnail", "" + photoCursor.getString(1));
}
Run Code Online (Sandbox Code Playgroud)
虽然联系人存在,但我没有收到任何日志,如果我删除Selection & Selection Args,我会在日志中看到Rohan。我究竟做错了什么?
我从下面的代码中获取图库中的图像
Uri filePath = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA,
MediaStore.Images.Media.DISPLAY_NAME, MediaStore.Images.Media.MIME_TYPE};
Cursor cursor =
mCon.getContentResolver().query(filePath, filePathColumn, null, null, null);
Run Code Online (Sandbox Code Playgroud)
但是当我在某些设备中从文件探索中选择图像时,光标始终为空,但如果我从图库应用程序中选择相同的图像则可以工作......为什么会这样?