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


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل در share کردن دیتا در ListView (در برنامه نویسی اندروید)

مشکل در share کردن دیتا در ListView (در برنامه نویسی اندروید)

#2
سلام.
خیلی ممنون که با حوصله و واضح توضیح دادید.  

من دو نکته به ذهنم میرسه :

1- کلید زیر را تا آخر بخوانید که در آن، دو مورد برای عدم تداخل اطلاعات item های Listview با هم شرح داده شده است :

کلید شماه 2961

که در آن، نکته اول، وابسته کردن اطلاعات به position است (درون روش getView)، که البته این طور که توضیح دادید، شما آن را رعایت کرده اید و دومی هم، ساختار صحیح برای روش getView است، یعنی مشابه کد زیر :
کد پی‌اچ‌پی:
View row convertView;         
if (
row == null) {
        
LayoutInflater inflater = (LayoutInflatergetSystemService(Context.LAYOUT_INFLATER_SERVICE);
        
row inflater.inflate(R.layout.list_itemparentfalse);


2- من این راه را که در فایل xml ، برای مشخصه onClick ، یک روش (method) را تعریف کنیم، قبلا تست کرده ام :

کد پی‌اچ‌پی:
android:onClick="shareData" 

اما برای عنصرهای در حالت عادی بود، نه برای عنصرهای قرار گرفته در ردیف های (rows) موجود در ListView . نمی گویم غلط است، ولی تاکنون آن را تست نکرده ام (حالا در ادامه استدلالم را شرح می دهم). معمولا در میان کدهای روش getView ، عنصر را شناسایی می کنیم و بعد با روش setOnClickListener (کلید شماره 2728)، تعیین می کنیم که با اشاره کاربر بر روی آن عنصر، چه کدی اجرا شود و در این مراحل، کدها را هم به position وابسته می کنیم تا item ها با هم تداخل پیدا نکنند (یعنی حداقل بنده همیشه همین روش را داشته ام).
به این دلیل این مورد استفاده شده در کد شما را مشکل دار می دانم که ما برای همه item ها، روش shareData را تعیین کرده ایم. درست است که در روش shareData ، متغیر id (وابسته به position) به کار رفته، ولی این متغیر در بیرون از روش getView ، برابر id حاصل از شماره آخرین ردیفی (item ای) است که View آن در صفحه ساخته شده (نمایش داده شده)(در View آخرین ردیف ساخته شده). اینکه چه مقداری باشه، بستگی داره که آخرین ردیف ساخته شده در صفحه چی باشه، نه اینکه ما روی کدام ردیف اشاره کرده ایم. یعنی تا آنجایی که بنده می دانم، شما باید position (یا id یا هر متغیر دیگر که به آن وابسته است) را تنها در روش getView به کار ببرید.

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

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط mina73 ، شماره مجازی امارات


پیام‌های این موضوع
RE: مشکل در share کردن دیتا در ListView (در برنامه نویسی اندروید) - توسط admin - ۱۳۹۴/۰۵/۲۵, ۰۴:۱۸ ب.ظ

پرش به انجمن:


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