我跟着the tutorial about the GridView。我试图通过适配器从布局xml文件绑定ImageView与GridView。我从mainActivity捕获了ImageView,我通过ImageAdapter的构造函数输入ImageView或者使ImageView静态,尝试了两种方法。它们都返回运行时异常。
//capturing imageView in the mainActivity
public static ImageView IMAGE_VIEW;
IMAGE_VIEW=(ImageView) findViewById(R.id.imageView1);
public class ImageAdapter extends BaseAdapter{
private Context mContext;
public ImageAdapter(Context c) {
mContext = c;
}
public int getCount() {
// It should return 16 ImageViews
return 16;
}
.
.
.
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) { // if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(150, 150));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(20, 20, 4, 4);
} else {
imageView = (ImageView) convertView;
}
imageView=MainActivity.IMAGE_VIEW; //I suppose here is the problem
// the code underneath works fine for an Image File not for the ImageView
// imageView.setImageResource(R.drawable.crazy);
return imageView;
}
}
这里有什么错误?会有什么解决方案?
答案 0 :(得分:0)
您可以在下面的教程中尝试自定义gridview
http://www.androidhive.info/2012/02/android-gridview-layout-tutorial/
http://www.mkyong.com/android/android-gridview-example/
你会对gridview提出更多想法...
答案 1 :(得分:-1)
尝试这样做。 在主xml文件中:
<GridView
android:id="@+id/gridView1"
android:layout_width="match_parent"
android:layout_height="match_parent">
</GridView>
在描述网格项的xml文件中:
<TextView
android:id="@+id/item_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/ic_launcher">
</TextView>
适配器:
// references to our images
public int[] mThumbIds = {
R.drawable.icon_1,
R.drawable.icon_2,
R.drawable.icon_3,
R.drawable.icon_4,
R.drawable.icon_5,
R.drawable.icon_6
};
方法getView中的:
TextView item = (TextView) view.findViewById(R.id.item_title);
item.setBackgroundResource(mThumbIds[position]);
在活动中:
// set grid menu
GridView gridview = (GridView) view.findViewById(R.id.gridView1);
YourAdapter adapter = new YourAdapter(); //put here your arguments
gridview.setAdapter(leftMenuAdapter);