PDA

View Full Version : مشکل با لیست ویو



lastcoder
چهارشنبه 17 اردیبهشت 1393, 21:34 عصر
دوستان سلام
من یک لیست ویو دارم که اطلاعات خودش را از دیتابیس می خونه و نمایش می ده اما مشکل اینجاست که با هر با اجرا این اکتیویتی به ازای هر رکورد داخل دیتابیس یکی دیگه ازش ساخته میشه و توی دیتابیس نشون داده می شه یعنی اگه من توی دیتابیسم دو رکورد داشته باشم دفعه همون دو رکورد رو نشون می ده اما دفعه دوم میشه چهار تا و دفعه بعدی شش تا و...
اینم کد دیتابیسم:

new File(DIR_DATABASE).mkdirs();
dataBase = SQLiteDatabase.openOrCreateDatabase(DIR_DATABASE + "/mytable.sqlite", null);
dataBase.execSQL("CREATE TABLE IF NOT EXISTS mytable (" +
"mytable_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE ," +
"mytable_title TEXT)");

dataBase.execSQL("INSERT INTO mytable (mytable_title) VALUES ('قسمت اول')");
dataBase.execSQL("INSERT INTO mytable (mytable_title) VALUES ('قسمت دوم')");

اینم کد مربوط به کوئری گرفتن از اطلاعات دیتابیس و نمایش در لیست ویو:

ListView lstContent = (ListView) findViewById(R.id.lstContent);
adapter = new AdapterNote(title);
lstContent.setAdapter(adapter);
populateFromDatabase();
adapter.notifyDataSetChanged();
}


private void populateFromDatabase() {
Cursor cursor = G.dataBase.rawQuery("SELECT * FROM mytable", null);
while (cursor.moveToNext()) {
StructNote detail = new StructNote();
detail.title = cursor.getString(cursor.getColumnIndex("mytable_title"));
title.add(detail);
}
cursor.close();
adapter.notifyDataSetChanged();
}

poorman
چهارشنبه 17 اردیبهشت 1393, 21:40 عصر
قبل از هر بار پر کردن title اون رو کامل خالی کنید تا مشکلتون حل بشه

lastcoder
چهارشنبه 17 اردیبهشت 1393, 21:55 عصر
قبل از هر بار پر کردن title اون رو کامل خالی کنید تا مشکلتون حل بشه

ممنون اینکار رو کردم اما بازهم این مشکل بوجود اومد

poorman
چهارشنبه 17 اردیبهشت 1393, 22:19 عصر
آها، به این دلیله که شما هر دفه داری اون دو تا سطر رو توی دیتابیس insert میکنی

یک شرط براش بذار که اگر جدول خالی بود insert کنه ، در غیر اینصورت کاری نکنه

lastcoder
چهارشنبه 17 اردیبهشت 1393, 22:54 عصر
آها، به این دلیله که شما هر دفه داری اون دو تا سطر رو توی دیتابیس insert میکنی

یک شرط براش بذار که اگر جدول خالی بود insert کنه ، در غیر اینصورت کاری نکنه

ببخشید میشه یه راهنمایی بکنید که چطوری بفهمم که اون رکورد خاص توی دیتابیس هست یا خیر؟

poorman
چهارشنبه 17 اردیبهشت 1393, 23:08 عصر
میترسم الان بیام یه راه حل بگم، بعد بگن حافظه زیاد مصرف میشه :لبخند:

ولی خب راه حلی که من پیشنهاد میکنم اینه که از سطر های تیبل count بگیرید

بعد اون رو چک کنید اگر صفر بود insert بشه

Cursor c = mydb.rawQuery("select COUNT(*) from MyTable", null);
c.moveToFirst();
Toast.makeText(context, "" + c.getInt(0), 1000).show();