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


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

مشکل در کار با لیست ویو

#2
سلام.
ابتدا بگذارید در مورد مشکل cannot be resolved or not a field که مربوط به عدم شناسایی فایل xml بوده، توضیح بدهم که صرفا مربوط به ساخت ListView نیست و یک مشکل رایج است که گاهی منابع ساخته شده، در کلاس R شناسایی نمی شوند که در مورد این مشکل، در موضوع زیر صحبت شده است :

http://www.kelidestan.com/forum/showthread.php?tid=4916

اما در مورد خود ماهیت ListView ، توصیه کلی بنده این است که در مواردی مثل ListView که ممکن است کمی کدها پیچیده باشند (و همچنین چندین نوع کدنویسی برای آن داریم)، ابتدا یک پروژه اندروید کامل را از اینترنت دریافت کرده و تست کنید، اگر درست بود و کدنویسی آن نیز مناسب برای مورد مورد نظر شما بود، آنگاه به ویرایش و توسعه آن بپردازید. 
اما در مورد این سوال که چرا گاهی از ArrayAdapter استفاده می شود و گاهی یک Adapter جدید بر اساس توسعه ArrayAdapter می سازیم، باید بگویم که این مسئله، به پیچیدگی ListView برمی گردد. یعنی در مواردی که تنها از ArrayAdapter استفاده می شود، تعدادی رشته (String) داریم که باید در TextView موجود در لایه گرافیکی (فایل xml) مربوط به هر item ، نمایش داده شوند. اما در موارد پیچیده تر که باید برای هر item ، عنصرهایی از لایه گرافیکی را شناسایی کرده و ویژگی ها و منابع مورد نظرمان را برای آنها تعیین کنیم (که حتی این ویژگی ها و منابع ممکن است برای ردیف های مختلف، متفاوت باشند)، دیگر ArrayAdapter مناسب نیست و باید یک Adapter پیچیده تر را بر اساس توسعه آن بسازیم.
خود بنده معمولا حتی اگر با یک Listview ساده سر و کار داشته باشم، باز هم سعی می کنم Adapter سفارشی بسازم تا در آینده، در صورت تصمیم برای پیچیده تر کردن ListView ، نیاز به تغییر زیادی نباشد.
در خود کلیدهای سایت هم، دو کلید وجود دارد که یکی بر اساس ArrayAdapter می باشد :

کلید شماره 246

و دیگری بر ااساس ساخت یک Adapter سفارشی :

کلید شماره 843

اگر نگاهی به ساختار آن دو بیندازید، تفاوت ها را متوجه می شوید و همچنین کلید دومی، مثال کامل و مناسبی برای ساخت یک ListView می باشد.
اما چون کدهایی را ذکر کردید، توضیحاتی را هم در مورد آنها ذکر می کنم. ابتدا کد زیر :

کد پی‌اچ‌پی:
lv = (ListViewfindViewById(R.id.your_list_view_id); 

کد بالا برای شناسایی یک ListView تعریف شده در لایه گرافیکی متناظر با Activity می باشد. یعنی در فایل xml متناظر با Activity ، یک تگ ListView داریم که id آن برابر your_list_view_id بوده است. 
اما کد زیر :

کد پی‌اچ‌پی:
lv =  getListView(); 

کد بالا برای شناسایی ListView در یک ListActivity به کار می رود، نه در یک Activity (که البته خودتان نیز این نکته را تذکر دادید)(زیرا معمولا برنامه نویسان گیج می شوند که چرا گاهی کد بالا عمل می کند و گاهی عمل نمی کند). در این مورد، در لینک زیر نیز توضیحاتی داده شده است (پاسخ اول در این لینک) :

http://stackoverflow.com/questions/62755...n-activity

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


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

پرش به انجمن:


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