مشکل در ساخت دو لیست ویو شخصی (در اندروید)
ارسالها: 35
موضوعها: 14
تاریخ عضویت: آبان ۱۳۹۳
اعتبار:
0
سپاس ها 10
سپاس شده 13 بار در 6 ارسال
حالت من: هیچ کدام
۱۳۹۳/۰۹/۲۶, ۰۶:۲۸ ب.ظ
(آخرین تغییر در ارسال: ۱۳۹۳/۰۹/۲۶, ۰۷:۱۷ ب.ظ توسط admin.)
سلام دوستان.. خسته نباشید..
من یه کاستوم لیست درست کردم واسه یه لیستم..
ولی وقتی یه لیست ویو دیگه میسازم ، دیزاین این روی لیست ویوی جدیدم تاثیر میزاره. میخوام ک فقط یه لیست ویو از این کد استفاده کنه.
چجوری میتونم دوتا کاستوم داشته باشم؟
اینم کدش :
سپاس شده توسط | |
|
مشکل در ساخت دو لیست ویو شخصی (در اندروید)
ارسالها: 2,933
موضوعها: 191
تاریخ عضویت: تير ۱۳۹۱
اعتبار:
126
سپاس ها 1688
سپاس شده 3507 بار در 2023 ارسال
حالت من:
۱۳۹۳/۰۹/۲۶, ۰۷:۳۲ ب.ظ
(آخرین تغییر در ارسال: ۱۳۹۳/۰۹/۲۶, ۰۷:۳۲ ب.ظ توسط admin.)
سلام.
شما روش getView را به طور کلی نوشته اید (نه داخل یک adapter). بنابراین وقتی دو تا ListView داریم، هر دوی آنها را تغییر می دهد.
ابتدا یک backup از پروژه اندروید خود تهیه کنید، سپس این موارد را انجام بدهید :
نوع کلاس (Class) را به ListActivity تغییر بدهید (از ArrayAdapter به ListActivity). سپس دو ListView را شناسایی می کنید (تگ آنها درون فایل xml نوشته می شود که باید دارای id های متفاوت باشند)، اما برای هر کدام، یک adapter جداگانه تعریف می کنید که هر کدام از آن دو adapter ، کدهای مربوط به روش getView خود را دارد.
برای درک بهتر تعریف adapter ، کلید زیر را ببینید (البته برای کلید زیر، چون یک ListView داشتیم، کدهای شناسایی ListView به دردتون نمی خوره و باید دو ListView را بر اساس id آنها شناسایی کنید) :
کلید شماره 843
که در آن، اینگونه برای ListView ، یک adapter ساخته ایم (کدهای adapter) :
کد پیاچپی: 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; } }
شما یک adapter دیگر با نامی متفاوت می نویسید که برای ListView دوم به کار خواهد رفت. هر adapter هم کدهای روش getView مربوط به خود را دارد (جدا از یکدیگر).
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
سپاس شده توسط | |
|
مشکل در ساخت دو لیست ویو شخصی (در اندروید)
ارسالها: 35
موضوعها: 14
تاریخ عضویت: آبان ۱۳۹۳
اعتبار:
0
سپاس ها 10
سپاس شده 13 بار در 6 ارسال
حالت من: هیچ کدام
(۱۳۹۳/۰۹/۲۶, ۰۷:۳۲ ب.ظ)'admin' نوشته: سلام.
شما روش getView را به طور کلی نوشته اید (نه داخل یک adapter). بنابراین وقتی دو تا ListView داریم، هر دوی آنها را تغییر می دهد.
ابتدا یک backup از پروژه اندروید خود تهیه کنید، سپس این موارد را انجام بدهید :
نوع کلاس (Class) را به ListActivity تغییر بدهید (از ArrayAdapter به ListActivity). سپس دو ListView را شناسایی می کنید (تگ آنها درون فایل xml نوشته می شود که باید دارای id های متفاوت باشند)، اما برای هر کدام، یک adapter جداگانه تعریف می کنید که هر کدام از آن دو adapter ، کدهای مربوط به روش getView خود را دارد.
برای درک بهتر تعریف adapter ، کلید زیر را ببینید (البته برای کلید زیر، چون یک ListView داشتیم، کدهای شناسایی ListView به دردتون نمی خوره و باید دو ListView را بر اساس id آنها شناسایی کنید) :
کلید شماره 843
که در آن، اینگونه برای ListView ، یک adapter ساخته ایم (کدهای adapter) :
کد پیاچپی: 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; } }
شما یک adapter دیگر با نامی متفاوت می نویسید که برای ListView دوم به کار خواهد رفت. هر adapter هم کدهای روش getView مربوط به خود را دارد (جدا از یکدیگر).
ممنون از راهنمایی..
اگه بخوام کلاسم اکستند اکتیوتی باشه نه لیست اکتیویتی چطور اینکارو کنم؟
سپاس شده توسط | |
|
مشکل در ساخت دو لیست ویو شخصی (در اندروید)
ارسالها: 2,933
موضوعها: 191
تاریخ عضویت: تير ۱۳۹۱
اعتبار:
126
سپاس ها 1688
سپاس شده 3507 بار در 2023 ارسال
حالت من:
۱۳۹۳/۰۹/۲۷, ۰۱:۵۸ ب.ظ
(آخرین تغییر در ارسال: ۱۳۹۳/۰۹/۲۷, ۰۱:۵۸ ب.ظ توسط admin.)
(۱۳۹۳/۰۹/۲۶, ۱۰:۲۱ ب.ظ)'ahh90' نوشته: ممنون از راهنمایی..
اگه بخوام کلاسم اکستند اکتیوتی باشه نه لیست اکتیویتی چطور اینکارو کنم؟
باید از کدهایی استفاده کنید که روش های (method) به کار رفته در آن، در کلاس Activity موجود باشد. مثلا شما اگر یک ListView را در کلاس ListActivity بسازید (کدهایی که معمولا در ListActivity به کار می روند و بدون هیچ خطایی)، بعد کلاس ListActivity را به کلاس Activity تغییر بدهید، برنامه eclipse به شما اخطار می دهد که برخی روش هایی که نوشته اید، برای کلاس Activity تعریف نشده (چون آنها برای کلاس ListActivity بوده اند). بنابراین اگر قصد دارید که حتما کلاس Activity باشد، ابتدا باید ببینید که چه کدهایی براس ساخت ListView در آن به کار می رود و ببینید که آیا خواسته های شما را برآورده می کنند یا خیر.
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
سپاس شده توسط | |
|
مشکل در ساخت دو لیست ویو شخصی (در اندروید)
ارسالها: 6
موضوعها: 1
تاریخ عضویت: فروردین ۱۳۹۴
اعتبار:
1
سپاس ها 2
سپاس شده 7 بار در 3 ارسال
حالت من: هیچ کدام
۱۳۹۴/۰۱/۲۵, ۰۷:۰۷ ب.ظ
(آخرین تغییر در ارسال: ۱۳۹۴/۰۱/۲۵, ۰۷:۲۸ ب.ظ توسط admin.)
ی راه حل درست
کد پیاچپی: import android.app.Activity; import android.content.Context; import android.graphics.Color; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import android.widget.AdapterView.OnItemClickListener; public class AlphabetListDemo extends Activity { //String of alphabets // String alphabts = {"A","B","C","D","E","F","G","H","I","J","K","L"}; ListView L1, L2; myAdapter myadp; myAdapter2 myadp2; String prod_arr = {}; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); L1 = (ListView)findViewById(R.id.list1); L2 = (ListView)findViewById(R.id.list2); myadp = new myAdapter(this,alphabts); L2.setAdapter(myadp); // initial populating // setProducts(0); L2.setOnItemClickListener(new OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { setProducts(arg2); } }); } public void setProducts(int number){ prod_arr = new String[25]; // adding some dummy data // for(int i = 0; i < 25 ; i++){ prod_arr[i] = "Product : " + alphabts[number] + i; } //setting the adapter in listview // myadp2 = new myAdapter2(AlphabetListDemo.this,prod_arr); L1.setAdapter(myadp2); } class myAdapter extends ArrayAdapter<String> { TextView label; ImageView image; View row; public myAdapter(Context context,String arr) { super(context, android.R.layout.simple_list_item_1, arr); } public View getView(final int position, View convertView, ViewGroup parent) { try{ LayoutInflater inflater=getLayoutInflater(); row = inflater.inflate(R.layout.lv_rows, parent, false); label = (TextView)row.findViewById(R.id.item_title); label.setText(alphabts[position]); label.setTextColor(Color.YELLOW); }catch(Exception e){ } return row; } } // adapter for second list..... class myAdapter2 extends ArrayAdapter<String> { TextView label; ImageView image; View row; public myAdapter2(Context context,String arr) { super(context, android.R.layout.simple_list_item_1, arr); } public View getView(final int position, View convertView, ViewGroup parent) { try{ LayoutInflater inflater=getLayoutInflater(); row = inflater.inflate(R.layout.lv_rows, parent, false); label = (TextView)row.findViewById(R.id.item_title); label.setText(prod_arr[position]); label.setTextColor(Color.WHITE); }catch(Exception e){ } return row; } } }
|