چطور میشه فهمید که آخرین آیتمی که در لیست ویو اجرا شده کدوم بوده؟ (حل شد)
سلام دوستان.
من یک کاستوم لیست ویو داینامیک دارم که کاربر با یک دکمه در لیست ویو میتونه آیتم های لیست رو اضافه کنه و اسم و مشخصات هر سطر از این لیست رو تغییر بده. در نهایت با کلیک روی هر کدوم از این آیتم ها یک اکتیویتی مربوط به همون آیتم باز میشه که اسمی که کاربر خودش داده، بالای همون اکتیویتی نوشته میشه...
مقادیری که کاربر میده همراه با پوزیشن لیست ویو در داخل G.notes ذخیره میشه.
حالا میخوام یک دکمه داخل صفحه اول بذارم به عنوان : "مراجعه به عملیات آخر" و با کلیک روی این دکمه، کاربر باید متقل بشه به آخرین اکتیویتی که در اون فعالیت میکرده.
چطور باید یه همچین دکمه ای رو تعریف کنم و چطور میتونم بفهمم که کدوم آیتم از لیست آخرین بار اجرا شده بود !؟
لیست ویو رو دقیقا از روی متد استاد رفتم جلو + تغییرات جزئی برای قابلیت ایجاد و حذف آیتم های لیست.
با تشکر.
با استفاده از متد setOnScrollListener کلاس ListView و نوشتن کدهای لازم در متد onScroll :
@Override
publicvoidonScroll(AbsListViewlistView,finalintfirstVisibleItem,
finalintvisibleItemCount,finalinttotalItemCount){
//اینجا محاسباتی برای فهمیدن اینکه آخرین آیتم قابل مشاهده در لیست کدام هست
intlastItem =firstVisibleItem +visibleItemCount;
.
.
.
.
میتونی متغیر lastItem رو به صورت فیلد تعریف کنی که توی متدهای دیگه هم بهش دسترسی داشته باشی
سلام مجدد
به صورت زیر عمل کنید :
1. تعریف فیلد در کلاس جی :
public static int selectedItemPositon;
2. مقدار دهی در متد fill در نستد کلاس ViewHolder :
public void fill(final ArrayAdapter<StructNote> adapter, final StructNote item, final int position) {
G.selectedItemPosition = position; // مقدار دهی
});
3. استفاده از فیلد : ( این تنها یک مثال هست و با توجه به کارتون متغیرها تغییر خواهد کرد )
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
StructNote note = G.notes.get(G.selectedItemPosition);
edtTitle.setText(note.title);
edtDescription.setText(note.description);
chkDone.setChecked(note.done);
}
});
در نظر داشته باشید که روشی که شما قصد به انجامش داشتید شما رو محدود میکنه که دکمه خودتون رو در لایه ی آیتم درست کنید و مقدار پوزشن رو فقط باید از درون متد fill و از طریق اینتنت کردن ارسال میکردین ولی با روش بالا دیگه نیازی به اینتنت کردن نیست . هر زمان بطور اتوماتیک فیلد مقدار دهی میشه و دکمه رو هم میتونید در لایه ی اکتیوتی اصلی بسازید و از اونجا به فیلد دسترسی پیدا کنید و مثل روش بالا ازش یه استراکچرنت بسازید .
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .