Android 调用扩展gridview类引发异常
我试图在覆盖“layoutChildren()”的基础上更改GridView列的大小。 但当我给服装课打电话时,它抛出了一个例外 以下是适配器类中“Getview”的调用代码:Android 调用扩展gridview类引发异常,android,gridview,Android,Gridview,我试图在覆盖“layoutChildren()”的基础上更改GridView列的大小。 但当我给服装课打电话时,它抛出了一个例外 以下是适配器类中“Getview”的调用代码: public View getView (int position, View convertView, ViewGroup parent) { mParentView = parent; ImageCell v = null; if (convertView == null) {
public View getView (int position, View convertView, ViewGroup parent)
{
mParentView = parent;
ImageCell v = null;
if (convertView == null) {
v = new ImageCell (mContext);
v.setLayoutParams(new ResizeableGridView.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
v.setScaleType(ImageView.ScaleType.CENTER_CROP);
v.setPadding(40, 40, 40, 40);
} else {
v = (ImageCell) convertView;
}
v.mCellNumber = position;
v.mGrid = (ResizeableGridView) mParentView;
v.mEmpty = true;
v.setBackgroundResource (R.color.cell_empty);
started.
v.setOnTouchListener ((View.OnTouchListener) mContext);
v.setOnClickListener ((View.OnClickListener) mContext);
v.setOnLongClickListener ((View.OnLongClickListener) mContext);
return v;
}
和“可调整大小的GridView”:
ViewGroup.LayoutParams params=view.getLayoutParams()代码>这是导致异常的原因,您必须使用
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(your_height,your_width);
convertView.setLayoutParams(new GridView.LayoutParams(params));
如果容器是LinearLayout
12-20 10:40:41.382: E/AndroidRuntime(2646): FATAL EXCEPTION: main
12-20 10:40:41.382: E/AndroidRuntime(2646): java.lang.ClassCastException: android.widget.GridView
12-20 10:40:41.382: E/AndroidRuntime(2646): at com.package.mypackage.ImageCellAdapter.getView(ImageCellAdapter.java:81)
12-20 10:40:41.382: E/AndroidRuntime(2646): at android.widget.AbsListView.obtainView(AbsListView.java:1592)
12-20 10:40:41.382: E/AndroidRuntime(2646): at android.widget.GridView.onMeasure(GridView.java:955)
12-20 10:40:41.382: E/AndroidRuntime(2646): at android.view.View.measure(View.java:8313)
12-20 10:40:41.382: E/AndroidRuntime(2646): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
12-20 10:40:41.382: E/AndroidRuntime(2646): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017)
12-20 10:40:41.382: E/AndroidRuntime(2646): at android.widget.LinearLayout.measureVertical(LinearLayout.java:386)
12-20 10:40:41.382: E/AndroidRuntime(2646): at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
12-20 10:40:41.382: E/AndroidRuntime(2646): at android.view.View.measure(View.java:8313)
12-20 10:40:41.382: E/AndroidRuntime(2646): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
12-20 10:40:41.382: E/AndroidRuntime(2646): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017)
12-20 10:40:41.382: E/AndroidRuntime(2646): at android.widget.LinearLayout.measureVertical(LinearLayout.java:386)
12-20 10:40:41.382: E/AndroidRuntime(2646): at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
12-20 10:40:41.382: E/AndroidRuntime(2646): at android.view.View.measure(View.java:8313)
12-20 10:40:41.382: E/AndroidRuntime(2646): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(your_height,your_width);
convertView.setLayoutParams(new GridView.LayoutParams(params));