بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

چگونه با انجام کلیک جدید در یک سلول جدول، تغییراتی که با کلیک قبلی بر سلولی دیگر اعمال شده را از بین ببریم؟

مدیریت گفتگو
علی 12 سال پیش
آخرین تغییر: 12 سال پیش

به نام خدا

سلام؛ خسته نباشید.

در برنامه‌ای جدولی طراحی شده که دارای چندین سلول است.  برنامه‌نویس قصد دارد که اگر کاربر بر روی یک سلول کلیک کرد، مثلا رنگ زمینه آن سلول تغییر کند و اگر کلیک بعدی روی سلول دیگری بود سلول کیک شده قبلی به حالت اولیه خود برگردد. چگونه می‌توان این کار را انجام داد؟

(جدول مورد نظر از طریق XML طراحی نشده بلکه درون کلاس و با استفاده از حلقه ایجاد شده.)

اگر کسی بتواند راهنمایی کند ممنون می‌شوم.

نظرات

مشخصه هر سلول کلیک شده رو تو یه فیلد داشته باش. با کلیک بعدی سلول قبلی رو اصلاح کن - مشخصه سلول جدید رو ثبت کن و سلول جدید رو اصلاح کن

پاسخ‌ها 3

علی 12 سال پیش

ممنون از دوستان مشکلم حل شد!

نظرات

علی 12 سال پیش
بله. توی هر سلول یه تکست ویو هستش. یعنی سلول‌ها در اصل همون تکست ویوها هستن.
پس یه تکست ویو نداری! به تعداد سلولهات تکست داری - راه حل هم میشه همون قبلی - اگه مشخصه نداری خود تکست کلیک شده رو به عنوان آخرین مقدار نگهدار
علی 12 سال پیش
متاسفانه من نمی‌دونم چطوری می‌تونم تکست ویوی کلیک شده رو از بقیه متمایز کنم. وقتی که می‌خوام تکست ویوی کلیک شده رو به عنوان آخرین مقدار ذخیره کنم انگار همه تکست ویوها اون مقدار رو می‌گیرن.
sadeghbarout 12 سال پیش

یه textview از نوع static توی اون کلاسی که لیست ویو ت توش هست بساز

 public static TextView lastTextView;

بعد برو تو کدهای آداپترت و بگو اگه اون textview استاتیک، null نبود، رنگش رو به رنگ ظبیعی برگردون :

 if(MyClass.lastTextView!= null){
// تغییر رنگ به حالت طبیعی
}

و توی همون آداپترت بعد از خطوط بالا جایی که میخوای آداپتر جدید رو رنگ کنی، اون textview رو بریز توی همون مقدار استاتیک

 // بعد از تغییر رنگ textView فعلی
MyClass.lastTextView = currentTextView;

نظرات

علی 12 سال پیش
ممنون از راهنمایی‌تون با این روش مشکلم حل شد. شاید منظور اون یکی دوستمون هم همینی بود که شما گفتید. اما به هر حال بیان شما رو بهتر متوجه شدم.
علی 12 سال پیش

برای این‌که دوستان دیگه هم از این راهنمایی استفاده کنند کدش رو قرار می‌دم:

 

public static TextView lastTextView; // توی کلاسی که تکست‌ویوی پیش‌فرض ما در اون قرار داره تعریف می‌شه	

 

 if (lastTextView != null) {
lastTextView.setBackgroundResource(R.drawable.defoult_background);
currentTextView.setBackgroundResource(R.drawable.new_background);
lastTextView = currentTextView;
} else {
currentTextView.setBackgroundResource(R.drawable.new_background);
lastTextView = currentTextView;
}

نظرات


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .