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


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

استقاده از چند دکمه (Button) در لیست ویو (ListView) (برنامه نویسی اندروید)

#1
با سلام خدمت دوستان عزیز

من listview  یی که در کلید شماره 843 توضیح داده شده هست رو میخوام استفاده کنم .
http://www.kelidestan.com/keys/keys.php?key=843

در این لیست ویو چطوری میتونم در هر لیست سه تا دکمه قرار بدم که هر کدوم به اکتیویتی خاصی بره . همچنین در لیست های بعد نیز میخوام دکمه بذارم که به صفحات جداگانه بره
در کل 9 تا اکتیویتی دارم که میخوام 3 تا 3تا داخل 3 ردیف لیست بذارم .

ممنون میشم راهنمایی بکنید .
پاسخ

استقاده از چند دکمه (Button) در لیست ویو (ListView) (برنامه نویسی اندروید)

#2
سلام.
ابتدا باید فایل xml مربوط به تعریف ساختار گرافیکی ردیف ها (rows - items) را باز کنید و سه تگ Button به آن اضافه نمایید. در مبحثی که ذکر کردید، نام فایل xml برابر list_item.xml می باشد.
خوب حالا باید کدهای مورد نظرمان برای Button ها را تعیین کنیم (که با اشاره بر روی Button ها باید اجرا شوند).
برای این مورد، باید به سراغ کدهای روش getView برویم (که در Adapter مربوط به ListView نوشته شده). مثلا کد روش getView در مبحثی که ذکر کردیم را در اینجا نمایش می دهیم :

کد پی‌اچ‌پی:
@Override
public View getView(int positionView convertViewViewGroup parent) {
 
       LayoutInflater inflater = (LayoutInflatergetSystemService(Context.LAYOUT_INFLATER_SERVICE);
 
       View row inflater.inflate(R.layout.list_itemparentfalse);
 
       
        String stringName 
"string_key_" String.valueOf(position+1); 
 
       int string_res_ID getResources().getIdentifier(stringName,"string",getPackageName());
 
       String my_string getResources().getString(string_res_ID);
 
       TextView tv = (TextViewrow.findViewById(R.id.textView1);
 
       tv.setText(my_string);
 
       
        String imageName 
"key_" String.valueOf(position+1); 
 
       int image_res_ID getResources().getIdentifier(imageName,"drawable",getPackageName());
 
       ImageView iv = (ImageViewrow.findViewById(R.id.imageView1);
 
       iv.setImageResource(image_res_ID);

 
       return row;


به چگونگی شناسایی عناصر موجود در فایل list_item.xml (که ساختار گرافیکی ردیف ها را تعیین می کند) توجه کنید. مشابه آنها، باید 3 دکمه (Button) را شناسایی کنید.
سپس می توانید به همان روش معمولی، کدهایی را برای Button ها در نظر بگیرید (که با اشاره روی Button ، اجرا شوند) :

کلید شماره 2728

تا این مرحله، ساختار کدنویسی برای شناسایی عناصر در ردیف ها و تعیین کدهایی مربوط به آنها را شرح دادیم. اما شما قصد دارید که در هر ردیف، نام Activity هایی که به آنها می رویم، متفاوت باشد. بنابراین شما می توانید کدها را بر اساس شماره ردیف ها، به صورت شرطی بنویسید (با if و else و ...). یا یک روش دیگر، استفاده از کد کلیو سپس تغییر مقادیر بر اساس مقادیر ذخیره شده در Array یا ArrayList می باشد. این دو روش را در ادامه توضیح می دهیم :
شماره ردیف از ListView در روش getView ، با نام position مشخص شده است. بنابراین شما به این صورت کد می نویسید که اگر position برابر 0 بود، نام Activity برابر مثلا MyActivity_1 باشد، اگر position  برابر 1 بود، نام Activity برابر MyActivity_2 و ... (شیوه کدنویسی به سلیقه شما بستگی دارد، اما روش کلی به همین صورت شرطی نوشتن بر اساس position می باشد) .
همچنین می توان مقادیر مربوط به عناصر را در یک Array یا ArrayList نوشت و سپس عنصر برابر شماره position از آنها را خواند، در این حالت، یک کد کلی می نویسیم و نیازی به if و else هم نمی باشد. یعنی مثلا نام Activity ها را در یک Array می نویسیم و سپس بر اساس position ، نام از Array فراخوانی می شود و کد کلی بر اساس مقدار فراخوانی شده اجرا می شود.
اینکه کدام روش را انتخاب نمایید، بستگی به تعداد ردیف ها و سلیقه شما در کدنویسی دارد.

در ضمن، کد مربوط به رفتن به Activity جدید، هم با روش معمولی و هم بر اساس نام Activity (وقتی نام آن را به صورت String داریم) در دو کلید زیر ذکر شده است :

کلید شماره 2727

کلید شماره 252

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

استقاده از چند دکمه (Button) در لیست ویو (ListView) (برنامه نویسی اندروید)

#3
ممنون از راهنمایی

این position که در get view  گرفته میشه مربوط به ردیف ها هستش دیگه درسته ؟ مثلا اگه 3 تا ردیف داشته باشم یعنی 3 تا position  دارم بنام های 0 و 1 و 2

حالا میخوام بگم اگر در position 0 برروی btn1 کلیک شد بره activity 1 و اگر در همین position بر روی btn2 کلیک شد بره activity 2  و اگر بر روی btn 3 کلیک شد بره activity 3 . به همین روال برای position 2 و position 3 نیز باید اینکارو بکنم

اگه اینطوری میشه ممنون میشم در مورد کد if  یک راهنمایی بکنید که شرط رو چطوری بذارم یعنی کد شرط رو نمی تونم چطوری بگم در position 0 اگه این دکمه کلیک شد شرط رو اجرا کنه
پاسخ

استقاده از چند دکمه (Button) در لیست ویو (ListView) (برنامه نویسی اندروید)

#4
جناب admin ممنون میشم در این خصوص هم یک راهنمایی بفرمایید
پاسخ
 سپاس شده توسط aleas

استقاده از چند دکمه (Button) در لیست ویو (ListView) (برنامه نویسی اندروید)

#5
دوستان کسی در این مورد میتونه کمک کنه ؟
پاسخ

استقاده از چند دکمه (Button) در لیست ویو (ListView) (برنامه نویسی اندروید)

#6
سلام برای ساخت لیست ویو طبق آموزش سایت کلید483
لیست ویو مورد نظر بسازین و برای رویداد کلیک باتن ها

کد زیر
کد:
private class MyAdapter extends ArrayAdapter<String>{

               public MyAdapter(Context context, int resource, int textViewResourceId,
                               String[] strings) {
                       super(context, resource, textViewResourceId, strings);
                       // TODO Auto-generated constructor stub
               }
             
               @Override
               public View getView(int position, View convertView, ViewGroup parent) {
                       LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                       View row = inflater.inflate(R.layout.list_item, parent, false);
                     
                       String stringName = "string_key_" + String.valueOf(position+1);
                       int string_res_ID = getResources().getIdentifier(stringName,"string",getPackageName());
                       String my_string = getResources().getString(string_res_ID);
                       TextView tv = (TextView) row.findViewById(R.id.textView1);
                       tv.setText(my_string);
                     
                       String imageName = "key_" + String.valueOf(position+1);
                       int image_res_ID = getResources().getIdentifier(imageName,"drawable",getPackageName());
                       ImageView iv = (ImageView) row.findViewById(R.id.imageView1);
                       iv.setImageResource(image_res_ID);
     
                       return row;
               }
             
             
       }



به این صورت بنویسین


کد:
private class MyAdapter extends ArrayAdapter<String>{

               public MyAdapter(Context context, int resource, int textViewResourceId,
                               String[] strings) {
                       super(context, resource, textViewResourceId, strings);
                       // TODO Auto-generated constructor stub
               }
             
               @Override
               public View getView(int position, View convertView, ViewGroup parent) {
                       LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                       View row = inflater.inflate(R.layout.list_item, parent, false);
                     
                       String stringName = "string_key_" + String.valueOf(position+1);
                       int string_res_ID = getResources().getIdentifier(stringName,"string",getPackageName());
                       String my_string = getResources().getString(string_res_ID);
                       TextView tv = (TextView) row.findViewById(R.id.textView1);
                       tv.setText(my_string);
                     
                       String imageName = "key_" + String.valueOf(position+1);
                       int image_res_ID = getResources().getIdentifier(imageName,"drawable",getPackageName());
                       ImageView iv = (ImageView) row.findViewById(R.id.imageView1);
                       iv.setImageResource(image_res_ID);





///////////////////////کد مربوط به رویداد کلیک باتن با id=btn1
Button bn1=(Button) row.findViewById(R.id.btn1);

bn1.setOnClickListener(
new View.OnClickListener() {

public void onClick(View v) {

                       if (position==0)
{کد مورد نظر در صورتی روی باتن سطر اول در لیست ویو کلیک شده باشد}
if (position==1)
{کد مورد نظر در صورتی روی باتن سطر دوم در لیست ویو کلیک شده باشد}
if (position==2)
{کد مورد نظر در صورتی روی باتن سطر سوم در لیست ویو کلیک شده باشد}

                       }
                   }
           );
////////////////////////////////////



     
                       return row;
               }
             
             
       }
پاسخ
 سپاس شده توسط BahmanSE

استقاده از چند دکمه (Button) در لیست ویو (ListView) (برنامه نویسی اندروید)

#7
در کد بالا از پوزیشن 2 به بعد کار نمیکنه و در log cat خطای زیر رو میده :

InputDispatcher(901): Motion event has invalid pointer count 0; value must be between 1 and 16.
پاسخ
 سپاس شده توسط شماره مجازی امارات ، تلگرام ضد فیلتر 2023


پرش به انجمن:


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