我正在编写一个应用程序,其中要求是以两列的顺序排列。 这是我的Adapter.getView(..)实现:
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)
有什么建议我在这里缺少什么?
答案 0 :(得分: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 :(得分:1)
您将返回imageView而不是您充气的视图 写下来。
return view ;
答案 2 :(得分: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 ;
答案 3 :(得分:0)
您的观点似乎已附加到父级,请尝试以下操作:
view = inflater.inflate(R.layout.grid_item, parent, false);
和
return view;