بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
نمایش متفاوت در لیست ویو(حل شده)
سلام
من وقتی تو لیست ویو رو هر ایتمی کلیک شد واس اون ایتم تو دیتا بیس برای مثال read رو 1 میکنم که در حالی که اون ایتم کلیک نشده باشه 0 هست
حالا میخوام چک کنم که اگه read = 1 بود بک گراند اون ایتم سبز باشه و ایتم هایی که read =0 هستن بک قرمز داشته باشن میخوام بدونم همچین کاری امکان پذیره ؟
اگه میشه یه راهنمایی کامل کنید
+3
0
آره شدنیه. توی متد fill در کلاس adapter مقدار اون فیلد رو بگیر و یه شرط بزار که اگر 0 بود، پس زمینه قرمز باشه و اگر 1 بود سبز (11 سال پیش)
0
0
اینطور که شما میگی همه به رنگ سبز میشن یا همه قرمز میشن
من میخوام برای مثال اولین ایتم سبز باشه دومی قرمز (11 سال پیش)
+2
0
توی کلاس structure یه فیلد از جنس int بساز. حالا وقتی میخوای اطلاعات رو توی adapter بریزی از دیتابیس مقدار اون رکوردی که اگر خونده شده بود ۱ میشد رو توش بریز. حالا توی کلاس adapter یه شرط بزار که اگر ۰ بود قرمز و ۱ بود سبز شه. (11 سال پیش)
0
0
همین کاری که شما میگی رو قبلا کردم همه ی ایتم ها رنگشون تغییر میکنه
خودتونم میتونین امتحان کنین (11 سال پیش)
+2
0
تا حالا این کارو کردم و مطمئنم که روش درسته. شاید تمام روکودها مقدار فیلد readشون 0 یا 1 هست که همه رو یه رنگ نشون میده. مشکلتون دقیقا چیه؟ وقتی روی یک آیتم کلیک می کنید حتی وقتی هم که از اکتیویتی خارج میشید و دوباره وارد میشید رنگش عوض نمیشه؟ (11 سال پیش)
0
0
رنگ عوض میشه ولی همه عوض میشن که به درد من نمیخوره
من میخوام برای مثال ایتم 3 و 8 و 15 قرمز باشن چون رو این ایتم ها کلیک شده اما بقیه که کلیک نشده روشون سبز باشن (11 سال پیش)
+2
0
میدونم منظورتون چیه. احتمال خیلی زیاد در ریافت اطلاعات از دیتابیس اشتباه می کنید. به نظر میرسه که برای تمام آیتم ها فقط مقدار یک رکورد رو میگیرید (11 سال پیش)
0
0
اشتباه از من نیست ببینید شما سک adapter_note.xml داری که همه ی ایتم ها از اون xml استفاده میکنن پس وقتی بک گراند رو با هر شرطی تغییر بدی
واسه همه ی ایتم ها تغییر میکنه
یک راهی الان به ذهنم رسیده پیادش کردم اگه جواب داد اینجام میزارم
در اخرم ممنون واس کمکتون (11 سال پیش)
+2
0
خواهش می کنم. نه عزیز دارید اشتباه می کنید. اگر اینجور که شما می گید باشه تمام آیتم های لیست باید یکی باشند، به عنوان مثال اگر توی لیست قرار باشه هر آیتم دارای یک متن باشه آیا این امکان وجود نداره که هر آیتم متن متفاوت داشته باشه؟؟؟ ۱۰۰٪ وجود داره. تغییر رنگ پس زمینه هر آیتم هم به همین شکل است، پس دلیل شما کاملا اشتباه هست. مشکل از جای دیگه هست، بررسی کنید و ببینید که کجای کار رو اشتباه انجام میدید. (11 سال پیش)
0
0
درست حق با شماست تاحالا از این زاویه بهش نگاه نکرده بودم :D (11 سال پیش)
0
0
وقتی کلیک میشه read به درستی تغییر میکنه تو دیتا بیس مشکلی نیست
فقط نمیدونم کجا باید شرط رو چک کنم که بکگراند رو تایین کنم (11 سال پیش)
برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال
sun.of.god.7
11 سال پیش
0
0
کسی نیست که بتونه کمک کنه ؟؟؟
ایتم هایی رو که می سازی در واقع از یک ادپتر می سازی اسم اون layout رو که ایتم ها رو از روش می سازی و تمام ui های یک ایتم رو توی اون قرار دادی مشخص کن مثلا layoutAll بعد توی قسمت کد مربوط به ادپتر قسمت fill چک کن دیتا بیس رو برای هر ایتم اگر یک بود بک گراند اون layout مربوط به اون ایتم رو رنگش رو مشخص کن ... کار ساده ای هست این کار کدت رو بذاری بهتر میشه راهنمایی کرد اگه متوجه نشدی بگو تا بیشتر توضیح بدم و یه نمونه کد بذارم (11 سال پیش)
پاسخ به سوال
hosseinAmini
11 سال پیش
+6
0
این مراحل رو دقیقا اجرا کن:
1- توی کلاس struct یه فیلد برای id ایجاد کن. مثلا
public int itemId;
2- در قسمتی که اطلاعات لیست رو به adapter ارسال می کنید، مقدار id هر آیتم توی دیتابیس رو بگیر و توی itemId بریز. مثلا
while(cursor.moveToNext()){
StrcutList structs = new StructList();
structs.itemId = cursor.getInt(cursor.getColumnIndex("id"));
....
}
3- حالا توی متد fill در کلاس adapter، توی دیتابیس مقدار فیلد ready رکوردی که آیدیش برابر با itemId هست می گیریم. اگر نتیجه 1 بود، پس زمینه سبز و اگر 0 بود پس زمینه قرمز میشه.
int isRead = 0;
Cursor cursor = G.database.rawQuery("SELECT * FROM table WHERE id = " + item.itemId, null);
while(cursor.moveToNext()){
isRead = cursor.getInt(cursor.getColumnIndex("read"));
}
if(isRead == 0){
lneItem.setBackgroundColor(Color.RED);
}else if(isRead == 1){
lneItem.setBackgroundColor(Color.GREEN);
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .