View Full Version : مشکل در gridview
lastcoder
جمعه 05 اردیبهشت 1393, 20:00 عصر
دوستان سلام
من می خوام در یک gridview کنترل های سفارشی که ساختم رو نشون بدم اما نمی دونم چرا این کنترل ها نشون داده نمی شه
اینم کد:
GridView gridView = (GridView) findViewById(R.id.gridView);
gridView.setAdapter(new CustomAdapter(this));
اینم از کلاس custom_Adapter:
public Context mContext;
public CustomAdapter(Context c) {
mContext = c;
}
@Override
public int getCount() {
return 0;
}
@Override
public Object getItem(int arg0) {
return null;
}
@Override
public long getItemId(int arg0) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
CustomSpinner spinner;
if (convertView == null) {
spinner = new CustomSpinner(mContext);
spinner.setLayoutParams(new GridView.LayoutParams(150, 150));
spinner.setPadding(8, 8, 8, 8);
} else {
spinner = (CustomSpinner) convertView;
}
return spinner;
}
harani
جمعه 05 اردیبهشت 1393, 20:45 عصر
این کلاس custom_Adapter آخرت مشکل بهتره که یه چیزی مثل http://barnamenevis.org/showthread.php?449722-%D9%85%D8%B4%DA%A9%D9%84-%D8%AF%D8%B1-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-gallery
باشه هم count صفر هم getitem و .. که درست نیست .
lastcoder
جمعه 05 اردیبهشت 1393, 20:49 عصر
ممنون اما همونجوری که در عنوان گفتم من یک gridview می خوام نه یک گالری و در ضمن مقدار برگشتی اونها را هم عوض کردم اما هیچ تفاوتی نکرد
harani
جمعه 05 اردیبهشت 1393, 20:58 عصر
ممنون اما همونجوری که در عنوان گفتم من یک gridview می خوام نه یک گالری و در ضمن مقدار برگشتی اونها را هم عوض کردم اما هیچ تفاوتی نکرد
اصلاً مهم نیست برای گالری میخواین یا ن یک adapter را میتوانی برای هر جایی استفاده کنید . حالا میخواین برای چی بگید که من کمکتون کنم میخواین تکست نشون بدین ؟
lastcoder
جمعه 05 اردیبهشت 1393, 21:03 عصر
نه یک کنترل سفارشی (custom control) هست که خودم در یک اکتویتی دیگه ساختمش و می خوام به عنوان عناصر در gridview نشونش بدم و روی هر کدوم که کلیک شد به اکتویتی دیگه ای بره اما خوب هیچی نشون نمیده کرش هم نیمیکنه
harani
جمعه 05 اردیبهشت 1393, 21:24 عصر
میشه کدتون کاملتر بنویسید مثلاً بگید که این کنترل customspinner رو چگونه ساختید آخه برای ساخت کنترل سفارشی نیازی به ساخت اکتیوتی نیست .
lastcoder
جمعه 05 اردیبهشت 1393, 21:29 عصر
کد custom spinner:
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_S ERVICE);
inflater.inflate(R.layout.custom_spinner, this, true);
txtDesc = (TextView) findViewById(R.id.txtDesc);
harani
جمعه 05 اردیبهشت 1393, 21:37 عصر
ببیندید مثلاً من امدم یه گریدویو نوشتم که هر آیتمش یک کاستوم لیست ویو هستش
grid = (GridView)findViewById(R.id.grid);
String[] str = new String[]{"item1","item2","item3","item4"};
Adapter ad = new Adapter(this, str);
grid.setAdapter(ad);
همانظور در بالا معلوم شما برای پر کردن آیتم های گرید یا لیست یا ... نیاز به یک آرایه حتماً دارید که من دراینجا بطور کاملاً مثالی از آرایه استایک str استفاده کردم یه نکته دیگه اینکه هر گاه میخواین از دو کنترل کاستوم تودرتو مثل اینجا خواستید استفاده کنید از یک کلاس adapter استفاده کنید .
public class Adapter extends BaseAdapter {
private Context context;
private String[] items;
public Adapter(Context context, String[] items) {
this.context = context;
this.items = items;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return items.length;
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return items[arg0];
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
// TODO Auto-generated method stub
arg1 = LayoutInflater.from(context).inflate(R.layout.cust om, arg2,false);
ListView lv = (ListView)arg1.findViewById(R.id.list1);
String[] list_items = new String[]{"list_item1","list_item2","list_item3","list_item4"};
ListAdapter ad = new ListAdapter(list_items);
lv.setAdapter(ad);
return arg1;
}
// dar inja ham adapter control custom ro besazid
public class ListAdapter extends BaseAdapter{
private String[] list_items;
public ListAdapter(String[] list_items){
this. list_items = list_items;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list_items.length;
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return list_items[arg0];
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
// TODO Auto-generated method stub
arg1 = LayoutInflater.from(context).inflate(R.layout.item _list, arg2,false);
TextView txt = (TextView)arg1.findViewById(R.id.textviewItem);
txt.setText((String)getItem(arg0));
return arg1;
}
}
}
poorman
جمعه 05 اردیبهشت 1393, 21:45 عصر
کد آداپترتون مشکل داره ، شما باید یک layout از آیتم بسازید و داشته باشید
بعدش توی تابع getView اون رو ست کنید و مقدار بدید
برای کار با گریدویو کاستوم میتونید به نمونه برنامه ها مراجعه کنید
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.