استفاده از Cursor دیتابیس برای ساخت ListView
سلام استاد
من میخام یک لیست رو با استفاده از یک دیتابیس مقدار دهی کنم.
و میخام به تعداد رکوردها، لیست ایجاد بشه(منظور همون الوار) . من یک Query به این صورت نوشتم :
SELECT * FROM sport
این کدیه که نوشتم. قسمت دوم که بصورت عددی هستش تغییر میکنه، ولی قسمت تایتل فقط آخرین گزینه دیتابیس توی همه لیستها تکرار میشه.
{
while (G.cursor.moveToNext()) {
String temp1 = G.cursor.getString(G.cursor.getColumnIndex("device_name"));
String temp2 = G.cursor.getString(G.cursor.getColumnIndex("active_mus"));
set_list(temp1, j++);
}
G.cursor.close();
adapter.notifyDataSetChanged();
}
private void set_list(String name, int musel) {
StructNote note = new StructNote();
note.name_item = name;
note.muc_item = musel;
Log.i("log", "nam = " + name + " azole = " + musel);
G.notes.add(note);
}
و داخل همین حلقه مقادیر رو از دیتابیس یخونم و آیتمهای لیست رو مقدار دهی کنم؟ تا به تعداد رکوردها لیست ایجاد شه؟
البته من اینکارو کردم، تعداد لیستهایی که ایجاد میشه به تعداد رکوردهاست. اما مقادیر درست ست نمیشه. مثلا من میخام تیتر هر لیست، از دیتابیس خونده بشه، و هر لیست یک تیتر خاص بگیره . اما همه لیستها یک مقدار میگیرن و اون هم مقدار آخرین رکورد هستش.
سلام، سورس نمایش رو از همون مثال لیست شما برداشتم :
private static class ViewHolder {
public ViewGroup layoutRoot;
public TextView txtTitle;
public TextView txtDescription;
public ImageView list_image;
public ViewHolder(View view) {
txtTitle = (TextView) view.findViewById(R.id.name_dastgah);
txtDescription = (TextView) view.findViewById(R.id.azole_faal);
layoutRoot = (ViewGroup) view.findViewById(R.id.layoutroot);
list_image = (ImageView) view.findViewById(R.id.img_list);
}
public void fill(final ArrayAdapter adapter, final StructSport item, final int position) {
txtTitle.setText(item.name_item);
txtDescription.setText(item.muc_item);
layoutRoot.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
/* Intent intent = new Intent(G.currentActivity, ActivityEdit.class);
intent.putExtra("POSITION", position);
G.currentActivity.startActivity(intent);*/
}
});
}
}
اطلاعات دیتابیس رو قبل از اینکه بریزه توی آرایه توی لاگ کت درست نمایش میده، اما بازم فقط گزینه آخر توی لیست پر میشه. جالب اینجاست اگه یک شمارنده بذارم، اعداد به ترتیب توی لیست ذخیره میشه!
من چک کردم توی نمایل آرایه مشکل نداره بلکه مشکل از مقدار دهیه آرایه است. من آرایه رو بلافاصله بعد از مقدار دهی توی حلقه while دوباره لاگ کردمش همشون یک مقدار داشتن. !
من دیتابیس رو با اون افزونه فایرفاکس ایجاد کردم، و بعد فقط توی اکلیپس وارد کردم. ممکنه مشکل ازون باشه؟ البته هیچ مشکل ظاهری نداره یعنی داره اطلاعات رو میخونه و نمایش میده اما وارد آرایه نمیکنه!
نه نشد. الوار ها تعداد Slot هایی هستند که برای پوشاندن ارتفاع صفحه کافی هستند. در حالیکه اطلاعات یک دیتابیس ممکن است از 1000 تا تجاوز کند.
بله می تونید، اما آیتم های ArrayList رو مقدار دهی باید بکنید دیگه چون خود ListView مقدار دهی نمیشه.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .