آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

چطور میشه فهمید که آخرین آیتمی که در لیست ویو اجرا شده کدوم بوده؟ (حل شد)

alfredo  10 سال پیش  10 سال پیش
0 0

سلام دوستان.

من یک کاستوم لیست ویو داینامیک دارم که کاربر با یک دکمه در لیست ویو میتونه آیتم های لیست رو اضافه کنه و اسم و مشخصات هر سطر از این لیست رو تغییر بده. در نهایت با کلیک روی هر کدوم از این آیتم ها یک اکتیویتی مربوط به همون آیتم باز میشه که اسمی که کاربر خودش داده، بالای همون اکتیویتی نوشته میشه... 

مقادیری که کاربر میده همراه با پوزیشن لیست ویو در داخل G.notes ذخیره میشه.

حالا میخوام یک دکمه داخل صفحه اول بذارم به عنوان : "مراجعه به عملیات آخر" و با کلیک روی این دکمه، کاربر باید متقل بشه به آخرین اکتیویتی که در اون فعالیت میکرده.

چطور باید یه همچین دکمه ای رو تعریف کنم و چطور میتونم بفهمم که کدوم آیتم از لیست آخرین بار اجرا شده بود !؟

لیست ویو رو دقیقا از روی متد استاد رفتم جلو + تغییرات جزئی برای قابلیت ایجاد و حذف آیتم های لیست.

با تشکر.

 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
مسعود فرمانی  10 سال پیش
+2 0

با استفاده از متد setOnScrollListener کلاس ListView و نوشتن کدهای لازم در متد onScroll :

@Override
publicvoidonScroll(AbsListViewlistView,finalintfirstVisibleItem,
finalintvisibleItemCount,finalinttotalItemCount){

//اینجا محاسباتی برای فهمیدن اینکه آخرین آیتم قابل مشاهده در لیست کدام هست
intlastItem =firstVisibleItem +visibleItemCount;
.
.
.
.


میتونی متغیر lastItem رو به صورت فیلد تعریف کنی که توی متدهای دیگه هم بهش دسترسی داشته باشی

0 0
خیلی ممنونم از توجهتون. الآن متغیر intlastItem میشه اخرین آیتم باز شده ؟ حالا من چجوری توی دکمه ی صفحه اولم بهش بفهمونم که این رو باز کنه ؟ (10 سال پیش)
+1 0
بله متغیر lastItem از نوع int میشه پوزیشن آخرین آیتمی که کاربر با اسکرول کردن دیده(نه آخرین آیتمی که روش کلیک کرده)... (10 سال پیش)
0 0
من آخرین آیتمی رو میخوام که کاربر روش کلیک کرده ! (10 سال پیش)
+1 0
هر اطلاعاتی که از آخرین آیتم کلیک شده (مثلا شماره پوزیشن،اشاره گرهای لایه اش و..) رو میتونید در زمان کلیک شدن روی همون آیتم بگیرید و در متغیر مناسب ذخیره کنید...... (10 سال پیش)
0 0
کمک :( (10 سال پیش)
+1 0
سلام . 1. یه فیلد با نوع استراکچر نوت در کلاس جی تعریف کنید . بصورت پابلیک و استاتیک باشه 2. در متد fill که در کلاس ViewHolder که درواقع یک نستد کلاسه , مقدار فیلد تعریف شده رو برابر با item قرار بدید. 3. کافیه هرجا خواستید فیلد مورد نظر رو فراخوانی کنید که این فیلد همیشه آخرین آیتم کلیک شده رو در خودش داره که در نتیجه یه راه ارتباطی به تمام خصوصیات اون آیتم مثل اسمش و توضیحاتش و غیره هست. 4. تمام ! (10 سال پیش)
0 0
این کارو کردم، حالا توی دکمه ای که توی صفحه اولم میخوام از item استفاده کنم، نمیدونم چه کدی بنویسم که پوزیشن رو از توی این آیتم بگیره و اینتنت کنه به اکتیویتی موردنظر. (10 سال پیش)
0 0
این کارو کردم، حالا توی دکمه ای که توی صفحه اولم میخوام از item استفاده کنم، نمیدونم چه کدی بنویسم که پوزیشن رو از توی این آیتم بگیره و اینتنت کنه به اکتیویتی موردنظر. (10 سال پیش)
+1 0
خب اگر میخواید از طریق پوزیشن و اینتنت کردن کارتون رو پیش ببرید , اون فیلدی رو که گفتم رو از نوع int بسازید و در متد fill بجای اینکه item رو درش واریز کنید , متغیر position رو درون فیلد قرار بدید . اینطور به راحتی از طریق اینتنت انتقالش بدید و بعد هم استراکچر نت مورد نظرتون رو اونجا ساخته و به محتویاتش دسترسی پیدا کنید . مثل این کد : StructNote note = G.notes.get(position) (10 سال پیش)
پاسخ به سوال 
MOHAMAD  10 سال پیش
+2 0

سلام مجدد

به صورت زیر عمل کنید :

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 و از  طریق اینتنت کردن ارسال میکردین ولی با روش بالا دیگه نیازی به اینتنت کردن نیست . هر زمان بطور اتوماتیک فیلد مقدار دهی میشه و دکمه رو هم میتونید در لایه ی اکتیوتی اصلی  بسازید و از اونجا به فیلد دسترسی پیدا کنید و مثل روش بالا ازش یه استراکچرنت بسازید .

 

0 0
خیلی ممنونم، فقط قسمت 3 رو درست متوجه نشدم، الان چجوری از توی اکتیویتی صفحه اول برنامه میخواد توی صفحه عملیات موردنظر ، عمل ست تکست رو انجام بده ؟! آخه توی اون صفحه گت تکست هست که تکست رو از توی G.notes میخونه. (10 سال پیش)
+1 0
فهمیدم چی شد ! دمت گرم آقا خییییییییلللللللللل آقایییییییییییی !!!!!! از هر دو عزیزی که کمک کردند کمال تشکر رو دارم و دستشون رو میبوسم ! خصوصاً آقا محمد ! (10 سال پیش)

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