2013-04-24 83 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()爲您的需要。