Не может получить объект из gridView
Я создал вид текущей недели, используя GridView
, Я использую BaseAdapter
для генерации GridView
,
Вот как я ценю GridView
ArrayList<WeekCellItem> weekCellItems = getData(scheduleListdto);
gridview1.setAdapter(new WeekAdapter(getApplicationContext(),weekCellItems));
И мне нужно CurrentItem
в положении, когда я нажал на каждую ячейку на GridView
,
Я написал onItemClickListener
для GridView
gridview1.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
Object o= gridview1.getItemAtPosition(arg2);
Log.e("", "hhh");
}
});
Я получаю объект "о" как ноль.
(РЕДАКТИРОВАТЬ)
Моя неделя Адаптер
public class WeekAdapter extends BaseAdapter
{
Context mycontext;
ArrayList<String>weekHeads;
ArrayList<WeekCellItem> weekCellItems;
LayoutInflater inflater;
public WeekAdapter(Context c, ArrayList<WeekCellItem> items, ArrayList<String> obj)
{
weekCellItems=items;
weekHeads=obj;
mycontext=c;
inflater = LayoutInflater.from(c);
}
public int getCount() {
// TODO Auto-generated method stub
return weekCellItems.size();
}
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
public View getView(int pos, View convertview, ViewGroup parent) {
// TODO Auto-generated method stub
viewHolder holder = new viewHolder();
if(convertview==null)
{
convertview = inflater.inflate(R.layout.weekly_layout, null);
holder.tv = (TextView) convertview.findViewById(R.id.textweeklylayout);
convertview.setTag(holder);
}
else
holder=(viewHolder)convertview.getTag();
return convertview;
}
private static class viewHolder
{
TextView tv;
}}
2 ответа
Решение
Вам нужно реализовать адаптер getItem()
метод. gridview.getItemAtPosition()
по очереди вызывать адаптеры getItem()
-метод.
Ваш WeekAdapter's getItem()
возвращает ноль. Это проблема. Так должно быть:
public Object getItem(int arg0) {
return weekCellItems.get(arg0);
}
Добавьте следующий код.
public Object getItem(int arg0) {
if (weekCellItems == null || weekCellItems.size() == 0)
return null;
return weekCellItems.get(arg0);
}
Почему: Вы реализуете свой собственный Адаптер, поэтому вам нужно изменить getItem() по мере необходимости.