【问题标题】:cannot get the object from the gridView无法从 gridView 获取对象
【发布时间】:2013-04-24 05:06:49
【问题描述】:

我使用GridView 创建了本周的视图。我使用BaseAdapter 来生成GridView

这就是我给GridView赋值的方式

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

当我点击GridView 上的每个单元格时,我需要CurrentItem

我为GridView写了onItemClickListener

gridview1.setOnItemClickListener(new OnItemClickListener() {

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

我将对象“o”设为空。

(编辑)

我的周适配器

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

【问题讨论】:

  • 显示您的 WeekAdapter 代码
  • 创建自定义适配器
  • 能否添加WeakAdapter类代码?

标签: android gridview baseadapter onitemclicklistener


【解决方案1】:

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

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

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

【讨论】:

  • 您需要检查 WeakAdapter 类的代码。它应该有一个 getItem() 方法。您应该在 getItem() 的位置返回一个对象。
【解决方案2】:

添加以下代码。

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

    return weekCellItems.get(arg0); 
}

为什么:您正在实现您的自定义适配器,因此您需要根据需要修改 getItem()。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-12
    • 2021-05-19
    • 2013-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多