2014-11-15 1 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

Вы возвращаете изображение вместо своего вида, которое вы надули Напиши это.

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; 

ИЛИ

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;