public class MyCustomGridView extends GridView implements OnItemClickListener{
private Listener mListener;
public MyCustomGridView(Context context, AttributeSet attrs) {
super(context, attrs);
setOnItemClickListener(this);
}
public void onItemClick(AdapterView parent, View v, int position, long id) {
if (mListener != null) {
mListener.onClick(position);
}
}
public void setListener(Listener l){
mListener = l;
}
public interface Listener{
void onClick(int position);
}
}
public class Main extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MyCustomGridView mGrid = (MyCustomGridView) findViewById(R.id.my_custom_grid_view);
mGrid.setListener(new ItemListener());
mGrid.setAdapter(new ImageAdapter(this));
}
private class ItemListener implements MyCustomGridView.Listener{
public void onClick(int position) {
Log.d("almond","test");
}
}
public class ImageAdapter extends BaseAdapter {
private Context mContext;
public ImageAdapter(Context c) {
mContext = c;
}
public int getCount() {
return mThumbIds.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
// create a new ImageView for each item referenced by the Adapter
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(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(mThumbIds[position]);
return imageView;
}
private Integer[] mThumbIds = {
R.drawable.icon,R.drawable.icon,R.drawable.icon
};
}
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<com.almondmendoza.myGridView.MyCustomGridView
android:id="@+id/my_custom_grid_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:cacheColorHint="#00000000"
android:listSelector="@android:color/transparent"
android:numColumns="auto_fit"
android:columnWidth="160px"
/>
</LinearLayout>
本文介绍了一种在Android中创建自定义GridView的方法,并实现了点击事件监听。通过继承GridView并覆盖其OnItemClickListener,开发者可以轻松地为每个grid项添加点击响应。此外,还提供了一个简单的例子来展示如何使用自定义GridView。
1万+

被折叠的 条评论
为什么被折叠?



