使用的CursorAdapter填充的ListView [英] filling listview using cursoradapter
问题描述
我实现了自定义光标适配器列表视图我。但列表视图总是空。
让我解释一下我的codeS:
OfflineAdapter offlineadapter =新OfflineAdapter(CTX,NULL);
listview.setAdapter(offlineadapter);
有什么真正的解释在这里。
搬进我的offlineadapter类:
公共类OfflineAdapter扩展的CursorAdapter { 公共com.androidarabia.lazylist.ImageLoader ImageLoader的; @燮pressWarnings(德precation)
公共OfflineAdapter(上下文的背景下,光标C){
超(背景下,C); ImageLoader的=新com.androidarabia.lazylist.ImageLoader(
context.getApplicationContext());
初始化...
公开查看NewView的(上下文的背景下,光标光标的ViewGroup父){
LayoutInflater吹气= LayoutInflater.from(背景);
视图V = inflater.inflate(R.layout.pricelist,父母,假);
bindView(ⅴ,上下文,光标);
返回伏;
}
充气布局...
@覆盖
公共无效bindView(视图V,上下文的背景下,光标C){
尝试{
字符串title = c.getString(C
.getColumnIndexOrThrow(LebanonSamsung.KEY_PHONENAME));
字符串日期= c.getString(C
.getColumnIndexOrThrow(LebanonSamsung.KEY_MODELNUMBER));
字符串的ImagePath = c.getString(C
.getColumnIndexOrThrow(LebanonSamsung.KEY_PRICE));
字符串删除= c.getString(C
.getColumnIndexOrThrow(LebanonSamsung.KEY_URL)); TextView的title_text =(TextView中)v.findViewById(R.id.title);
title_text.setText(职称);
TextView的DATE_TEXT =(TextView中)v.findViewById(R.id.modelnumber);
date_text.setText(日期);
ImageView的item_image =(ImageView的)v.findViewById(R.id.list_image);
imageLoader.DisplayImage(缺失,item_image); TextView的del_image =(TextView中)v.findViewById(R.id.details);
del_image.setText(的ImagePath);
}赶上(例外五){
e.printStackTrace();
}
是,该数据库不为空可言,我跑了检查,以查看它是否为空,但它不是!
我能做什么?列表视图总是空的。我在做什么错了?谢谢!
**
更新
我注意到,我不是关闭游标。
这里是我的数据库codeS:
公共类LebanonSamsung {
公共静态最后弦乐KEY_PHONENAME =PHONE_NAME;
公共静态最后弦乐KEY_PRICE =phone_price;
公共静态最后弦乐KEY_MODELNUMBER =phone_modelnumber;
公共静态字符串prefName =SecretFile;
静态共享preferences preFS;
公共静态最后弦乐KEY_ROWID =_id;
公共静态最后弦乐KEY_URL =phone_picurl;
私有静态最后弦乐DATABASE_NAME =PriceListDatabasesamsunglebanon;
私有静态最终诠释DATABASE_VERSION = 1;
私有静态DbHelper ourHelper;
私有静态语境ourContext;
私有静态SQLiteDatabase MDB;
私有静态最后弦乐SQLITE_SAMSUNGLEBANON =SamsungLebanon;
公共静态最后弦乐DATABASE_CREATESAMSUNGLEBANON =CREATE TABLE IF NOT EXISTS
+ SQLITE_SAMSUNGLEBANON
+(
+ KEY_ROWID
+INTEGER PRIMARY KEY AUTOINCREMENT
+ KEY_PHONENAME
+TEXT NOT NULL,
+ KEY_URL
+TEXT NOT NULL,
+ KEY_PRICE
+TEXT NOT NULL,+ KEY_MODELNUMBER +TEXT NOT NULL);; 私有静态类DbHelper扩展SQLiteOpenHelper { 公共DbHelper(上下文ourContext){
超(ourContext,DATABASE_NAME,空,DATABASE_VERSION);
preFS = ourContext.getShared preferences(prefName,
Context.MODE_PRIVATE); } @覆盖
公共无效的onCreate(SQLiteDatabase为arg0){
// TODO自动生成方法存根
arg0.execSQL(DATABASE_CREATESAMSUNGLEBANON); } @覆盖
公共无效onUpgrade(SQLiteDatabase为arg0,ARG1 INT,INT ARG2){
// TODO自动生成方法存根
arg0.execSQL(DROP TABLE IF EXISTS+ SQLITE_SAMSUNGLEBANON); 的onCreate(为arg0);
}
} 公共LebanonSamsung(上下文onNavigationListener){
ourContext = onNavigationListener;
} 公共LebanonSamsung的open()抛出的SQLException {
ourHelper =新DbHelper(ourContext);
MDB = ourHelper.getWritableDatabase();
返回此;
} 公共无效的close(){
ourHelper.close();
} 公共布尔deletesamsung(){ INT doneDelete = 0;
doneDelete = mDb.delete(SQLITE_SAMSUNGLEBANON,NULL,NULL);
Log.w(错误双向删除升表,Integer.toString(doneDelete));
返回doneDelete> 0;
} 众长createEntrySamsung(字符串phonename,字符串phoneprice,
字符串modelnumber,字符串URL){
ContentValues CV =新ContentValues();
cv.put(KEY_PHONENAME,phonename);
cv.put(KEY_PRICE,phoneprice);
cv.put(KEY_MODELNUMBER,modelnumber);
cv.put(KEY_URL,URL); 返回mDb.insert(SQLITE_SAMSUNGLEBANON,空,CV); } 公共光标listsamsung(){ 光标mCursor = mDb.query(SQLITE_SAMSUNGLEBANON,
新的String [] {KEY_ROWID,KEY_PHONENAME,KEY_PRICE,
KEY_MODELNUMBER,KEY_URL},NULL,NULL,NULL,NULL,
空值); 如果(mCursor!= NULL){
mCursor.moveToFirst();
}
返回mCursor;
} 公共无效insertsamsung(){
// TODO自动生成方法存根
新insertentries()执行(); } 公共类insertentries扩展的AsyncTask<字符串,整数,字符串> { 在preExecute保护无效(){
} @覆盖
保护字符串doInBackground(字符串... PARAMS){
// TODO自动生成方法存根
InputStream的ISR = NULL;
字符串结果=;
尝试{
字符串URL;
HttpClient的HttpClient的=新DefaultHttpClient();
字符串范围= prefs.getString(范围,1);
字符串sortby = prefs.getString(过滤,ByDate);
URL =有一个网址;
Log.e(URL,URL);
HttpPost httpost =新HttpPost(URL);
HTT presponse resposne = httpclient.execute(httpost);
HttpEntity实体= resposne.getEntity();
ISR = entity.getContent();
读者的BufferedReader =新的BufferedReader(
新的InputStreamReader(ISRUTF-8),8);
StringBuilder的SB =新的StringBuilder();
串线= NULL;
而((行= reader.readLine())!= NULL){
sb.append(行+\\ n);
}
isr.close();
结果= sb.toString(); JSONArray jArray =新JSONArray(结果);
的for(int i = 0; I< jArray.length();我++){
JSONObject的JSON = jArray.getJSONObject(I)
createEntrySamsung(json.getString(PhoneName),
json.getString(PhonePrice),
json.getString(ModelNumber),
json.getString(图片网址));
}
}赶上(例外五){
Log.e(log_tag,错误转换结果+ e.toString());
} 返回结果;
} 保护无效onProgressUpdate(整数...进度){ } 保护无效onPostExecute(字符串结果){ }
}
}任何人
?
logcat的:
08-06 17:13:10.753:E / SQLiteDatabase(532):关闭()从未被明确要求在数据库'/data/data/com.androidarabia.phones/databases / PriceListDatabasesamsunglebanon
08-06 17:13:10.753:E / SQLiteDatabase(532):android.database.sqlite.DatabaseObjectNotClosedException:应用程序没有关闭在这里打开游标或数据库对象
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.database.sqlite.SQLiteDatabase<&初始化GT;(SQLiteDatabase.java:1943)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1007)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:986)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:1051)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:770)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:221)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:157)
08-06 17:13:10.753:E / SQLiteDatabase(532):在com.androidarabia.databases.LebanonSamsung.open(LebanonSamsung.java:81)
08-06 17:13:10.753:E / SQLiteDatabase(532):在com.androidarabia.drawer.SamsungLB.onCreateView(SamsungLB.java:65)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.support.v4.app.Fragment.performCreateView(Fragment.java:1478)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1460)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:472)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.support.v4.view.ViewPager.populate(ViewPager.java:1068)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.support.v4.view.ViewPager.populate(ViewPager.java:914)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1436)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.view.View.measure(View.java:12723)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:594)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.widget.RelativeLayout.onMeasure(RelativeLayout.java:376)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.view.View.measure(View.java:12723)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.view.View.measure(View.java:12723)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.view.View.measure(View.java:12723)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.view.View.measure(View.java:12723)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.widget.LinearLayout.measureVertical(LinearLayout.java:812)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.widget.LinearLayout.onMeasure(LinearLayout.java:553)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.view.View.measure(View.java:12723)
08-06 17:13:10.753:E / SQLiteDatabase(532):在com.jeremyfeinstein.slidingmenu.lib.CustomViewAbove.onMeasure(CustomViewAbove.java:456)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.view.View.measure(View.java:12723)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:594)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.widget.RelativeLayout.onMeasure(RelativeLayout.java:376)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.view.View.measure(View.java:12723)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
08-06 17:13:10.753:E / SQLiteDatabase(532):在com.android.internal.policy.impl.PhoneWindow $ DecorView.onMeasure(PhoneWindow.java:2092)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.view.View.measure(View.java:12723)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1064)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.os.Handler.dispatchMessage(Handler.java:99)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.os.Looper.loop(Looper.java:137)
08-06 17:13:10.753:E / SQLiteDatabase(532):在android.app.ActivityThread.main(ActivityThread.java:4424)
08-06 17:13:10.753:E / SQLiteDatabase(532):在java.lang.reflect.Method.invokeNative(本机方法)
08-06 17:13:10.753:E / SQLiteDatabase(532):在java.lang.reflect.Method.invoke(Method.java:511)
08-06 17:13:10.753:E / SQLiteDatabase(532):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784)
08-06 17:13:10.753:E / SQLiteDatabase(532):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
08-06 17:13:10.753:E / SQLiteDatabase(532):在dalvik.system.NativeStart.main(本机方法)
08-06 17:13:10.793:E /系统(532):未捕获的异常被抛出终结
08-06 17:13:10.875:E /系统(532):java.lang.IllegalStateException:不必数据库锁定!
08-06 17:13:10.875:E /系统(532):在android.database.sqlite.SQLiteDatabase.verifyLockOwner(SQLiteDatabase.java:2090)
08-06 17:13:10.875:E /系统(532):在android.database.sqlite.SQLiteDatabase $ 1.entryRemoved(SQLiteDatabase.java:2182)
08-06 17:13:10.875:E /系统(532):在android.database.sqlite.SQLiteDatabase $ 1.entryRemoved(SQLiteDatabase.java:2178)
08-06 17:13:10.875:E /系统(532):在android.util.LruCache.trimToSize(LruCache.java:197)
08-06 17:13:10.875:E /系统(532):在android.util.LruCache.evictAll(LruCache.java:285)
08-06 17:13:10.875:E /系统(532):在android.database.sqlite.SQLiteDatabase.deallocCachedSqlStatements(SQLiteDatabase.java:2143)
08-06 17:13:10.875:E /系统(532):在android.database.sqlite.SQLiteDatabase.closeClosable(SQLiteDatabase.java:1126)
08-06 17:13:10.875:E /系统(532):在android.database.sqlite.SQLiteDatabase.finalize(SQLiteDatabase.java:1914)
08-06 17:13:10.875:E /系统(532):在java.lang.Daemons $ FinalizerDaemon.doFinalize(Daemons.java:182)
08-06 17:13:10.875:E /系统(532):在java.lang.Daemons $ FinalizerDaemon.run(Daemons.java:168)
08-06 17:13:10.875:E /系统(532):在java.lang.Thread.run(Thread.java:856)
此行的第二个值应该是一个游标从DB retrived
OfflineAdapter offlineadapter =新OfflineAdapter(CTX,NULL);
尝试:
LebanonSamsung lSamsung =新LebanonSamsung(CTX)。开();
光标C = lSamsung.listsamsung();
OfflineAdapter offlineadapter =新OfflineAdapter(CTX,C);
你可能有另一个问题是,你是填充您的数据库有一个后台任务,你在哪里调用insertsamsung()? ,你应该考虑在onPostExecute功能适配器设置到列表中。
i implemented Custom cursor adapter in my listview. but the listview is always null. Let me explain my codes:
OfflineAdapter offlineadapter = new OfflineAdapter(ctx, null);
listview.setAdapter(offlineadapter);
There's nothing really to explain Here. Moving into my offlineadapter Class:
public class OfflineAdapter extends CursorAdapter {
public com.androidarabia.lazylist.ImageLoader imageLoader;
@SuppressWarnings("deprecation")
public OfflineAdapter(Context context, Cursor c) {
super(context, c);
imageLoader = new com.androidarabia.lazylist.ImageLoader(
context.getApplicationContext());
Initializing...
public View newView(Context context, Cursor cursor, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(context);
View v = inflater.inflate(R.layout.pricelist, parent, false);
bindView(v, context, cursor);
return v;
}
Inflating layout...
@Override
public void bindView(View v, Context context, Cursor c) {
try {
String title = c.getString(c
.getColumnIndexOrThrow(LebanonSamsung.KEY_PHONENAME));
String date = c.getString(c
.getColumnIndexOrThrow(LebanonSamsung.KEY_MODELNUMBER));
String imagePath = c.getString(c
.getColumnIndexOrThrow(LebanonSamsung.KEY_PRICE));
String deletion = c.getString(c
.getColumnIndexOrThrow(LebanonSamsung.KEY_URL));
TextView title_text = (TextView) v.findViewById(R.id.title);
title_text.setText(title);
TextView date_text = (TextView) v.findViewById(R.id.modelnumber);
date_text.setText(date);
ImageView item_image = (ImageView) v.findViewById(R.id.list_image);
imageLoader.DisplayImage(deletion, item_image);
TextView del_image = (TextView) v.findViewById(R.id.details);
del_image.setText(imagePath);
} catch (Exception e) {
e.printStackTrace();
}
Yes, the database isn't null at all, i ran a check to view if it's null but it's not! What can i do? the listview is always empty. what i'm doing wrong??? Thanks!
**
UPDATE i noticed that im not closing cursor. Here's my database codes:
public class LebanonSamsung {
public static final String KEY_PHONENAME = "phone_name";
public static final String KEY_PRICE = "phone_price";
public static final String KEY_MODELNUMBER = "phone_modelnumber";
public static String prefName = "SecretFile";
static SharedPreferences prefs;
public static final String KEY_ROWID = "_id";
public static final String KEY_URL = "phone_picurl";
private static final String DATABASE_NAME = "PriceListDatabasesamsunglebanon";
private static final int DATABASE_VERSION = 1;
private static DbHelper ourHelper;
private static Context ourContext;
private static SQLiteDatabase mDb;
private static final String SQLITE_SAMSUNGLEBANON = "SamsungLebanon";
public static final String DATABASE_CREATESAMSUNGLEBANON = "CREATE TABLE IF NOT EXISTS "
+ SQLITE_SAMSUNGLEBANON
+ " ("
+ KEY_ROWID
+ " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ KEY_PHONENAME
+ " TEXT NOT NULL, "
+ KEY_URL
+ " TEXT NOT NULL, "
+ KEY_PRICE
+ " TEXT NOT NULL, " + KEY_MODELNUMBER + " TEXT NOT NULL);";
private static class DbHelper extends SQLiteOpenHelper {
public DbHelper(Context ourContext) {
super(ourContext, DATABASE_NAME, null, DATABASE_VERSION);
prefs = ourContext.getSharedPreferences(prefName,
Context.MODE_PRIVATE);
}
@Override
public void onCreate(SQLiteDatabase arg0) {
// TODO Auto-generated method stub
arg0.execSQL(DATABASE_CREATESAMSUNGLEBANON);
}
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
arg0.execSQL("DROP TABLE IF EXISTS " + SQLITE_SAMSUNGLEBANON);
onCreate(arg0);
}
}
public LebanonSamsung(Context onNavigationListener) {
ourContext = onNavigationListener;
}
public LebanonSamsung open() throws SQLException {
ourHelper = new DbHelper(ourContext);
mDb = ourHelper.getWritableDatabase();
return this;
}
public void close() {
ourHelper.close();
}
public boolean deletesamsung() {
int doneDelete = 0;
doneDelete = mDb.delete(SQLITE_SAMSUNGLEBANON, null, null);
Log.w("error bi deleting l table", Integer.toString(doneDelete));
return doneDelete > 0;
}
public long createEntrySamsung(String phonename, String phoneprice,
String modelnumber, String url) {
ContentValues cv = new ContentValues();
cv.put(KEY_PHONENAME, phonename);
cv.put(KEY_PRICE, phoneprice);
cv.put(KEY_MODELNUMBER, modelnumber);
cv.put(KEY_URL, url);
return mDb.insert(SQLITE_SAMSUNGLEBANON, null, cv);
}
public Cursor listsamsung() {
Cursor mCursor = mDb.query(SQLITE_SAMSUNGLEBANON,
new String[] { KEY_ROWID, KEY_PHONENAME, KEY_PRICE,
KEY_MODELNUMBER, KEY_URL }, null, null, null, null,
null);
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}
public void insertsamsung() {
// TODO Auto-generated method stub
new insertentries().execute("");
}
public class insertentries extends AsyncTask<String, Integer, String> {
protected void onPreExecute() {
}
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
InputStream isr = null;
String result = "";
try {
String url;
HttpClient httpclient = new DefaultHttpClient();
String range = prefs.getString("range", "1");
String sortby = prefs.getString("filtering", "ByDate");
url = "there's a url";
Log.e("url", url);
HttpPost httpost = new HttpPost(url);
HttpResponse resposne = httpclient.execute(httpost);
HttpEntity entity = resposne.getEntity();
isr = entity.getContent();
BufferedReader reader = new BufferedReader(
new InputStreamReader(isr, "UTF-8"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
isr.close();
result = sb.toString();
JSONArray jArray = new JSONArray(result);
for (int i = 0; i < jArray.length(); i++) {
JSONObject json = jArray.getJSONObject(i);
createEntrySamsung(json.getString("PhoneName"),
json.getString("PhonePrice"),
json.getString("ModelNumber"),
json.getString("imageurl"));
}
} catch (Exception e) {
Log.e("log_tag", "Error converting Result " + e.toString());
}
return result;
}
protected void onProgressUpdate(Integer... progress) {
}
protected void onPostExecute(String result) {
}
}
}Anybody
? LOGCAT:
08-06 17:13:10.753: E/SQLiteDatabase(532): close() was never explicitly called on database '/data/data/com.androidarabia.phones/databases/PriceListDatabasesamsunglebanon'
08-06 17:13:10.753: E/SQLiteDatabase(532): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1943)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1007)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:986)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:1051)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:770)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:221)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:157)
08-06 17:13:10.753: E/SQLiteDatabase(532): at com.androidarabia.databases.LebanonSamsung.open(LebanonSamsung.java:81)
08-06 17:13:10.753: E/SQLiteDatabase(532): at com.androidarabia.drawer.SamsungLB.onCreateView(SamsungLB.java:65)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1478)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1460)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:472)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.support.v4.view.ViewPager.populate(ViewPager.java:1068)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.support.v4.view.ViewPager.populate(ViewPager.java:914)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1436)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.view.View.measure(View.java:12723)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:594)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:376)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.view.View.measure(View.java:12723)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.view.View.measure(View.java:12723)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.view.View.measure(View.java:12723)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.view.View.measure(View.java:12723)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.widget.LinearLayout.measureVertical(LinearLayout.java:812)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.widget.LinearLayout.onMeasure(LinearLayout.java:553)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.view.View.measure(View.java:12723)
08-06 17:13:10.753: E/SQLiteDatabase(532): at com.jeremyfeinstein.slidingmenu.lib.CustomViewAbove.onMeasure(CustomViewAbove.java:456)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.view.View.measure(View.java:12723)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:594)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:376)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.view.View.measure(View.java:12723)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
08-06 17:13:10.753: E/SQLiteDatabase(532): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2092)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.view.View.measure(View.java:12723)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1064)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.os.Handler.dispatchMessage(Handler.java:99)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.os.Looper.loop(Looper.java:137)
08-06 17:13:10.753: E/SQLiteDatabase(532): at android.app.ActivityThread.main(ActivityThread.java:4424)
08-06 17:13:10.753: E/SQLiteDatabase(532): at java.lang.reflect.Method.invokeNative(Native Method)
08-06 17:13:10.753: E/SQLiteDatabase(532): at java.lang.reflect.Method.invoke(Method.java:511)
08-06 17:13:10.753: E/SQLiteDatabase(532): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
08-06 17:13:10.753: E/SQLiteDatabase(532): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
08-06 17:13:10.753: E/SQLiteDatabase(532): at dalvik.system.NativeStart.main(Native Method)
08-06 17:13:10.793: E/System(532): Uncaught exception thrown by finalizer
08-06 17:13:10.875: E/System(532): java.lang.IllegalStateException: Don't have database lock!
08-06 17:13:10.875: E/System(532): at android.database.sqlite.SQLiteDatabase.verifyLockOwner(SQLiteDatabase.java:2090)
08-06 17:13:10.875: E/System(532): at android.database.sqlite.SQLiteDatabase$1.entryRemoved(SQLiteDatabase.java:2182)
08-06 17:13:10.875: E/System(532): at android.database.sqlite.SQLiteDatabase$1.entryRemoved(SQLiteDatabase.java:2178)
08-06 17:13:10.875: E/System(532): at android.util.LruCache.trimToSize(LruCache.java:197)
08-06 17:13:10.875: E/System(532): at android.util.LruCache.evictAll(LruCache.java:285)
08-06 17:13:10.875: E/System(532): at android.database.sqlite.SQLiteDatabase.deallocCachedSqlStatements(SQLiteDatabase.java:2143)
08-06 17:13:10.875: E/System(532): at android.database.sqlite.SQLiteDatabase.closeClosable(SQLiteDatabase.java:1126)
08-06 17:13:10.875: E/System(532): at android.database.sqlite.SQLiteDatabase.finalize(SQLiteDatabase.java:1914)
08-06 17:13:10.875: E/System(532): at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:182)
08-06 17:13:10.875: E/System(532): at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:168)
08-06 17:13:10.875: E/System(532): at java.lang.Thread.run(Thread.java:856)
This line the second value should be a Cursor retrived from your DB
OfflineAdapter offlineadapter = new OfflineAdapter(ctx, null);
Try:
LebanonSamsung lSamsung= new LebanonSamsung(ctx).open();
Cursor c = lSamsung.listsamsung();
OfflineAdapter offlineadapter = new OfflineAdapter(ctx, c);
Another issue you might have is that you are populating your DB with a background task, where are you calling "insertsamsung()"? , you should consider setting the adapter to your list in the onPostExecute function.
这篇关于使用的CursorAdapter填充的ListView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!