2013-04-24 87 views
0

我使用GridView创建了本周的视图。我使用BaseAdapter来生成GridView无法从gridView获取对象

这是我给的值到GridView

 ArrayList<WeekCellItem> weekCellItems = getData(scheduleListdto); 
    gridview1.setAdapter(new WeekAdapter(getApplicationContext(),weekCellItems)); 

而且我需要在CurrentItem当现在的位置是我上的GridView每个小区点击。

我写的onItemClickListenerGridView

gridview1.setOnItemClickListener(new OnItemClickListener() { 

     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
       long arg3) { 
      Object o= gridview1.getItemAtPosition(arg2); 
      Log.e("", "hhh"); 
     } 
    }); 

我得到的对象 'O' 为空。

(EDIT)

我weekAdapter

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; 
}} 
+0

显示您的WeekAdapter代码 – 2013-04-24 05:08:35

+0

非常老的问题 – Trikaldarshi 2013-04-24 05:08:37

+0

创建自定义适配器 – Trikaldarshi 2013-04-24 05:08:55

回答

2

您需要实现适配器的getItem()方法。 gridview.getItemAtPosition()依次调用适配器的getItem()-方法。

您的WeekAdapter的getItem()返回null。那就是问题所在。它应该是:

public Object getItem(int arg0) { 
    return weekCellItems.get(arg0); 
} 
+0

这意味着...你可以给我一个exapmle .. – Vikky 2013-04-24 05:09:45

+0

你需要检查WeakAdapter类的代码。它应该有一个getItem()方法。你应该从getItem()的位置返回一个对象。 – TieDad 2013-04-24 05:11:54

+0

哈哈哈大声笑.....我的愚蠢错误...... – Vikky 2013-04-24 05:15:38

1

添加以下代码。

public Object getItem(int arg0) { 
    if (weekCellItems == null || weekCellItems.size() == 0) 
     return null; 

    return weekCellItems.get(arg0); 
} 

为什么:您正在实现定制的适配器,所以你需要修改的getItem()为您的需要。