انجمن سایت کلیدستان


رتبه موضوع:
  • 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
کمک فوری آرایه آداپتر

کمک فوری آرایه آداپتر

#3
(۱۳۹۴/۰۵/۰۱, ۰۳:۵۲ ق.ظ)'داش بهروز' نوشته: دوست عزیز شما آرایه آداپتر به درستی نوشتید و مشکلی نیست..مشکل شما توی قسمت onItemClickLisnteaner هست..
ببینید ایراد شما فرستادن متغییر position  به عنوان پارامتر به اکتیویتی دیگر است .
این متغییر وابسته به لیست ویو شما هست..و مقدار آن همیشه به صورت اتوماتیک و وابسته بهه تعداد آیتم ها  از صفر شروع میشه میره به بالا.مقدار دهی میشود

مثلا فرض کنید لیست ویو شما 10 تا آیتم داره که اسم هر کدام به ترتیب a0, a1,a2,a3, a4,a5..... است ..و اون در یک لیست ویو نمایش میدهیم.
و میخواهیم برای a0 جمله صفرم ، برای   a1 جمله اول   برای a2 جمله دوم و....در اکتیویتی دوم نمایش دهیم.

حالا وقتی این لیست ویو نمایش داده میشود. مقدار position به صورت اتوماتیک به ترتیب برای
a0  مقدار 0
a1 مقدار  1
.
.
.
ست میشود.و وقتی شما کلیک میکنید بر ایتم a1  مقدار یک به اکیتیوتی دیگر فرستاده میشود و جمله اول نمایش داده میشود. و به درستی کار میکند.
اما

 وقتی شما عبارت سرچ رو استفاده میکنید مشکل بوجود می آید..به این صورت که

فرض کنید کاربر بعد از جستجوی عبارتی ،   سه آیتم a2 , a4 , a6 فیلتر شد و در لیست ویو نمایش داده شد..یعنی از 10 ایتم 3 آیتم فقط نتیجه جستجو بود.
پس لیست ویو شما دوباره از اول میاد مقادیر position به صورت اتوماتیک از صفر شروع میکند مقدار دهی میکند .یعنی برای
a2 مقدار 0
a4 مقدار 1
a6 مقدار 2
اینجاست که شما وقتی روی a2 کلیک میکنید بجای آنکه جمله دوم نمایش داده شود ..مقدار 0(مقدار position ) به اکتیویتی بعدی فرستاده میشود و جمله صفرم رو نشان میدهد.
پس با این تفاسیر شما نباید با position  برای تشخیص کدام جمله نمایش داده شود استفاده کنید.

روش درست:

گام اول: شما باید عنوان لیست ویو رو در یک آرایه Subjects بریزید.  و دو آرایه هم به نام ID و ID_TMP تعریف کنید و مقادیر 1و2 و3 و 4و ........برایش مقدار دهی کنید.(آرایه ID_TMP یک آرایه کمکی است)
 بعد متد سرچ رو بازنویسی کنید.یعنی
کد پی‌اچ‌پی:
public void onTextChanged(CharSequence sint startint beforeint count) {
         if (!
s.toString().equals("")) {
              List<
TitlefilteredTitles = new ArrayList<Title>;();
             
int j=0;
              for (
int i=0i<titles.size(); i++) {
                   if (
titles.get(i).toString().contains(s)) {
                       
filteredTitles.add(titles.get(i));  
                       
ID[j]=ID_TMP[i];  
                                      
                   }            
              }
              
adapter = new TitleListingArrayAdapter(TitleListingActivity.thisR.id.list, filteredTitles);
              
listView.setAdapter(adapter);
         }
         else {
              
adapter = new TitleListingArrayAdapter(TitleListingActivity.thisR.id.list, titles);
              
listView.setAdapter(adapter);             
         }[/
i
این متد میاد وقتی تا کاربر یک حرف جدید  در باکس جستجو   وارد میکند،   چک میکنه این حرف در کدام آیتم وجود دارد  اگر وجود داشت آن رو اضافه میکنه به filterTitle
و همچنین ID رو هم مقادیرش آپدیت میکنه و دوباره میسازه با کمک ID_TMP.
حالا کافیه برای اساس این آرایه جمله ها رو تشخیص بدید.
کد پی‌اچ‌پی:
[ii.putExtra("subject_number"ID[position]);[/i
دوست عزیز من سعی کردم اول دیده شما رو بازکنم به اینکه مشکل از چیست و ثانیا راهکار به شما بگم..
فقط با روشن شدن مطلب برایتان .کدها رو براساس سلیقه خودتون تغییر بدید.من کدها رو به صورت دستی وارد کردم .و چک نکردم آن را .ولی ساختار کلی آن همین است .امتحان کنید

 




واقعا ممنون 

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

 


فایل‌های پیوست

دانلود list.zip

نام فایل list.zip
نوع فایل .zip
دفعات دانلود 133
اندازه 729.61 KB
ارسال کننده فایل saeed.f436
پاسخ
 سپاس شده توسط شماره مجازی امارات ، تلگرام ضد فیلتر 2023


پیام‌های این موضوع
کمک فوری آرایه آداپتر - توسط saeed.f436 - ۱۳۹۴/۰۵/۰۱, ۱۲:۵۰ ق.ظ
RE: کمک فوری آرایه آداپتر - توسط داش بهروز - ۱۳۹۴/۰۵/۰۱, ۰۳:۵۲ ق.ظ
RE: کمک فوری آرایه آداپتر - توسط saeed.f436 - ۱۳۹۴/۰۵/۰۱, ۰۸:۵۵ ق.ظ

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان