2014-11-15 44 views
0

我正在編寫一個應用程序,其中要求是在兩列序列中可繪製的。 這是我Adapter.getView(..)實現:網格視圖自定義查看問題:java.lang.ClassCastException?

public View getView(int position, View convertView, ViewGroup parent) { 

      ImageView imageView = null; 

      if (convertView == null) { // if it's not recycled, initialize some attributes 

       View view = inflater.inflate(R.layout.grid_item, parent); 
       imageView = (ImageView) view.findViewById(R.id.picture); 

      } else { 
       imageView = (ImageView) convertView; 
      } 

      imageView.setImageResource(drawable[position]); 
      return imageView; 
     } 

但同時將其轉換,,它具有以下錯誤日誌響應:

E/AndroidRuntime(10419): java.lang.ClassCastException: android.widget.FrameLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams 
E/AndroidRuntime(10419): at android.widget.GridView.onMeasure(GridView.java:1056) 
E/AndroidRuntime(10419): at android.view.View.measure(View.java:15356) 

任何建議什麼,我在這裏失蹤?

回答

2

嘗試這樣的,加return convertView;

@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 
    final ViewHolder mHolder; 

    if (convertView == null) { 

     convertView = mInflater.inflate(R.layout.grid_item, null); 
     mHolder = new ViewHolder(); 
     mHolder.imageView = (ImageView) convertView.findViewById(R.id.picture); 
     convertView.setTag(mHolder); 

    } else { 
     mHolder = (ViewHolder) convertView.getTag(); 
    } 

    try { 
    imageView.setImageResource(drawable[position]); 

    } catch (Exception e) { 
     // TODO: handle exception 
    } 

    return convertView; 
} 

private class ViewHolder { 
    private ImageView imageView; 
    } 
1

你正在返回imageView而不是你膨脹的視圖 寫這個。

return view ; 
0

只要改變這一點。

if (convertView == null) { // if it's not recycled, initialize some attributes 

     convertView = inflater.inflate(R.layout.grid_item, parent); 
     imageView = (ImageView) convertView.findViewById(R.id.picture); 

} else { 
     imageView = (ImageView) convertView; 
     } 

imageView.setImageResource(drawable[position]); 
return convertView; 

OR

View view = convertView ; 

    if (view == null) { // if it's not recycled, initialize some attributes 

     view = inflater.inflate(R.layout.grid_item, parent); 
     imageView = (ImageView) view.findViewById(R.id.picture); 

} else { 
     imageView = (ImageView) view; 
} 

imageView.setImageResource(drawable[position]); 
return view ; 
0

好像你的觀點已經被連接到父母,試試這個:

view = inflater.inflate(R.layout.grid_item, parent, false); 

return view;