Farzad Sarseifi 575 ارسال شده در ۳ اردیبهشت ۱۳۹۲ گزارش اشتراک گذاری ارسال شده در ۳ اردیبهشت ۱۳۹۲ سفارشی سازی لیست ویو Listview : در بیشتر اپلیکیشن های اندرویدی لازم است ، که لیستی سفارشی بسازیم تا بتوانیم کلیه اطلاعات مورد نظر خود را در لیست جا دهیم مثلا بخواهیم هم تصاویر و هم متن در کنار هم قرار گیرند، و یا اینکه هر نوع لیستی که مدنظر دارید را میتوانید پیاده سازی کنید. در بخش دوم آموزش های لیست ویو Listview به لیست سفارشی میپردازیم، که تعدادی ایتم همراه با تصاویر را لیست میکند. 1-ابتدا باید یک xml برای طرح لیست خود ایجاد کنیم : <?xml version="1.0" encoding="utf-8"?> android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" > android:id="@+id/logo" android:layout_width="50px" android:layout_height="50px" android:layout_marginLeft="5px" android:layout_marginRight="20px" android:layout_marginTop="5px" androidrc="@drawable/windowsmobile_logo" > android:id="@+id/label" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@+id/label" android:textSize="30px" > 2-سپس یک کلاس جاوا ایجاد میکنیم. یک کلاس ایجاد میکنیم برای اینکه از ArrayAdapter ارث بری کنیم و فیلدها را با متد getView() سفارشی کنید. public class p30droidAdapter extends ArrayAdapter { private final Context context; private final String[] values; public p30droidAdapter(Context context, String[] values) { super(context, R.layout.list_data, values); this.context = context; this.values = values; } @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); View rowView = inflater.inflate(R.layout.list_data, parent, false); TextView textView = (TextView) rowView.findViewById(R.id.label); ImageView imageView = (ImageView) rowView.findViewById(R.id.logo); textView.setText(values[position]); // Change icon based on name String s = values[position]; System.out.println(s); if (s.equals("android_logo")) { imageView.setImageResource(R.drawable.android_logo); } else if (s.equals("iOS")) { imageView.setImageResource(R.drawable.ios_logo); } else if (s.equals("Blackberry")) { imageView.setImageResource(R.drawable.blackberry_logo); } else { imageView.setImageResource(R.drawable.windowsmobile_logo); } return rowView; }} 3- در مرحله پایانی نیز باید در اکتیویتی خود که لیست نمایش داده میشود .Adapter ساخته شده را لیست کنیم. public class CustomListviewActivity extends ListActivity { /** Called when the activity is first created. */ static final String[] MOBILE_OS = new String[] { "Android", "iOS", "WindowsMobile", "Blackberry"}; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setListAdapter(new p30droidAdapter(this, MOBILE_OS)); } @Override protected void onListItemClick(ListView l, View v, int position, long id) { //گرفتن سطرهای انتخابی String selectedValue = (String) getListAdapter().getItem(position); Toast.makeText(this, selectedValue, Toast.LENGTH_SHORT).show(); } دستور : setListAdapter(new p30droidAdapter(this, MOBILE_OS)); Adapter ساخته شده در کلاس جاوا را میسازد.(این متد چون از کلاس ListActivity ارث بری کرده ایم قابل دسترسی خواهد بود). [align=center] [align=justify]پسورد : www.p30droid.com[/align] [/align] CustomListview.zip CustomListview.zip نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر
peddy 0 ارسال شده در ۳۰ تیر ۱۳۹۴ گزارش اشتراک گذاری ارسال شده در ۳۰ تیر ۱۳۹۴ please what is password for customlistview.zip many thanks نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر
behrad9912 7 ارسال شده در ۳۰ تیر ۱۳۹۴ گزارش اشتراک گذاری ارسال شده در ۳۰ تیر ۱۳۹۴ please what is password for customlistview.zip many thanks the password is www.p30droid.com نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر
mmd2009 7 ارسال شده در ۳۰ تیر ۱۳۹۴ گزارش اشتراک گذاری ارسال شده در ۳۰ تیر ۱۳۹۴ با سلام به نظر من همیشه سعی بشه از ViewModel استفاده بشه خیلی بهتره. دیگه با این شرایط نیازی به if نیست. مثلا اداپتور اینطوری بشه بهتره : [shcode=java] public class p30droidAdapter extends BaseAdapter { private final Context context; private final List values; public p30droidAdapter(Context context, List values) { super(context, R.layout.list_data, values); this.context = context; this.values = values; } @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); View rowView = inflater.inflate(R.layout.list_data, parent, false); TextView textView = (TextView) rowView.findViewById(R.id.label); ImageView imageView = (ImageView) rowView.findViewById(R.id.logo); MyViewModel myItem=values.get(position); textView.setText(myItem.getTitle()); imageView.setImageResource(myItem.getImage()); return rowView; } } [/shcode] خصوصا وقتی لیست ویو داینامیکه. نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر
omidn1996 0 ارسال شده در ۳۱ تیر ۱۳۹۴ گزارش اشتراک گذاری ارسال شده در ۳۱ تیر ۱۳۹۴ من از کد زیر استفاده کردم اما با فورس کلوز مواجه شدم دلیلش چیه دوستان [shcode=java]package com.example.list; import android.os.Bundle; import android.app.Activity; import android.app.ListActivity; import android.content.Context; import android.view.LayoutInflater; import android.view.Menu; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; public class MainActivity extends ListActivity { public String[] Name; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); fill_array(); setListAdapter(new MyAdapter()); } public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } public void fill_array(){ for(int i=0;i<10;i++){ Name="test "+i; } } private class MyAdapter extends ArrayAdapter{ public MyAdapter() { super(MainActivity.this,R.layout.row_style,Name); } @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater in =getLayoutInflater(); View row=in.inflate(R.layout.row_style , parent , false); TextView name=(TextView) row.findViewById(R.id.row_text); name.setText(Name[position]); return row; } } }[/shcode] نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر
peddy 0 ارسال شده در ۱ مرداد ۱۳۹۴ گزارش اشتراک گذاری ارسال شده در ۱ مرداد ۱۳۹۴ Many thanks for customlistview password peddy Thanks but password not working peddy نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر
omidn1996 0 ارسال شده در ۲ مرداد ۱۳۹۴ گزارش اشتراک گذاری ارسال شده در ۲ مرداد ۱۳۹۴ من از کد زیر استفاده کردم اما با فورس کلوز مواجه شدم دلیلش چیه دوستان [shcode=java]package com.example.list; import android.os.Bundle; import android.app.Activity; import android.app.ListActivity; import android.content.Context; import android.view.LayoutInflater; import android.view.Menu; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; public class MainActivity extends ListActivity { public String[] Name; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); fill_array(); setListAdapter(new MyAdapter()); } public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } public void fill_array(){ for(int i=0;i<10;i++){ Name="test "+i; } } private class MyAdapter extends ArrayAdapter{ public MyAdapter() { super(MainActivity.this,R.layout.row_style,Name); } @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater in =getLayoutInflater(); View row=in.inflate(R.layout.row_style , parent , false); TextView name=(TextView) row.findViewById(R.id.row_text); name.setText(Name[position]); return row; } } }[/shcode] دوستان اگر ممکنه راهنمایی کنید مشکل هر چی هست از تابع fill_array هستش چون اگر name رو خودم چندتا مقدار بهش بدم کار میکنه اما با این تابع به مشکل برمیخوره ممنون میشم بفرمایید مشکل تابع چی هستش نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .