alertdilog加载一个gridview页面并实现gridView中每个imagebutton的点击事件
2014-05-07 19:28
477 查看
效果图:点击可执行点击事件
1、创建一个grid_item.xml,定义gridview的每个item布局,我这里为垂直布局,上面是图片,下面是文字。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:orientation="vertical" >
<ImageButton
android:id="@+id/imBtn_griditem_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal" />
<TextView
android:id="@+id/tv_griditem_imgname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal" />
</LinearLayout>
2、创建一个alertdialog_gridview.xml,弹出的alertdialog就加载此布局
<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/gv_share_image"
android:numColumns="3"
>
</GridView>
3、构建一个GridItem实体类
public class GridItem {
private int imageId;
private String imageName;
public GridItem() {
super();
}
public GridItem(int imageId, String imageName) {
super();
this.imageId = imageId;
this.imageName = imageName;
}
public int getImageId() {
return imageId;
}
public void setImageId(int imageId) {
this.imageId = imageId;
}
public String getImageName() {
return imageName;
}
public void setImageName(String imageName) {
this.imageName = imageName;
}
}
4、写一个Position接口备用,用于存放当前点击的imagebutton
public interface Position {
public void getpostion(int position);
}
5、为GridView 自定义Adapter
public class GridViewAdapter extends BaseAdapter {
private ArrayList<GridItem> gridItemList; //gridItem的集合
private Context context;
private LayoutInflater layoutInflater;
private Position pos;
public GridViewAdapter(Context context, String[] imageNames, int[] imageIds,Position position) {
super();
this.context = context;
gridItemList = new ArrayList<GridItem>();
this.pos=position;
layoutInflater = LayoutInflater.from(context);
for (int i = 0; i < imageIds.length; i++) { //将传过来的图片路径和文字放到集合中
GridItem picture = new GridItem(imageIds[i], imageNames[i]);
gridItemList.add(picture);
}
}
@Override
public int getCount() {
// TODO Auto-generated method stub
if (null != gridItemList) {
return gridItemList.size();
} else {
return 0;
}
}
@Override
public GridItem getItem(int position) {
// TODO Auto-generated method stub
return gridItemList.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder viewHolder;
if (convertView == null) {
convertView=layoutInflater.inflate(R.layout.grid_item, null);
viewHolder=new ViewHolder();
viewHolder.imageBtn=(ImageButton)convertView.findViewById(R.id.imBtn_griditem_image);
viewHolder.imageName=(TextView)convertView.findViewById(R.id.tv_griditem_imgname);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
//为每个item的每个imagebutton设置点击事件,并把当前position放到接口中
viewHolder.imageBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
pos.getpostion(position);
}
});
viewHolder.imageBtn.setImageResource(gridItemList.get(position).getImageId());
viewHolder.imageName.setText(gridItemList.get(position).getImageName());
return convertView;
}
class ViewHolder {
public ImageButton imageBtn;
public TextView imageName;
}
}
6、MainActivity实现Position
public class MainActivity extends Activity implements Position{
private final int TENCENT = 0;
private final int SINA = 1;
private final int WXFRIEND = 2;
private final int WXQUAN = 3;
private final int MESSAGE = 4;
private final int EMAIL = 5;
private GridView gridView;
private AlertDialog dialog ;
private int shareTencent = 0;
private int shareSina = 1;
private String[] imageNames = { "腾讯微博", "新浪微博", "微信好友", "微信朋友圈", "短信", "邮件" };
private int[] imageIds = { R.drawable.share_tencent_btn_selector,
R.drawable.share_sina_btn_selector,
R.drawable.share_weixin_btn_selector,
R.drawable.share_weixin_quan_btn_selector,
R.drawable.share_message_btn_selector,
R.drawable.share_email_btn_selector };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//此处也可以加载其他页面,放一个button,点击button弹出dialog,本人做的是一加载就弹出dialog
setContentView(R.layout.alertdialog_gridview);
buildDialog();
}
private void buildDialog() {
gridView = (GridView) LayoutInflater.from(this)
.inflate(R.layout.alertdialog_gridview, null)
.findViewById(R.id.gv_share_image);
gridView.setAdapter(new GridViewAdapter(this, imageNames, imageIds,
this));
dialog = new AlertDialog.Builder(this).setView(gridView)
.setTitle("分享到").create();
dialog.show();
}
/**重写getposition方法*/
@Override
public void getpostion(int position) {
// TODO Auto-generated method stub
switch (position) {
case TENCENT:
// 腾讯微博分享。检查网络并跳转界面
//在此处写点击事件0。。。。
dialog.dismiss();
break;
case SINA:
// 新浪微博分享。检查网络并跳转界面
//在此处写点击事件1。。。。
dialog.dismiss();
break;
case WXFRIEND:
// 微信好友分享
//在此处写点击事件2。。。。
dialog.dismiss();
break;
case WXQUAN:
// 微信圈分享
//在此处写点击事件3。。。。
dialog.dismiss();
break;
case MESSAGE:
// 短信分享
//在此处写点击事件4。。。。
dialog.dismiss();
break;
case EMAIL:
// 邮件分享
//在此处写点击事件5。。。。
dialog.dismiss();
break;
}
}
1、创建一个grid_item.xml,定义gridview的每个item布局,我这里为垂直布局,上面是图片,下面是文字。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:orientation="vertical" >
<ImageButton
android:id="@+id/imBtn_griditem_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal" />
<TextView
android:id="@+id/tv_griditem_imgname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal" />
</LinearLayout>
2、创建一个alertdialog_gridview.xml,弹出的alertdialog就加载此布局
<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/gv_share_image"
android:numColumns="3"
>
</GridView>
3、构建一个GridItem实体类
public class GridItem {
private int imageId;
private String imageName;
public GridItem() {
super();
}
public GridItem(int imageId, String imageName) {
super();
this.imageId = imageId;
this.imageName = imageName;
}
public int getImageId() {
return imageId;
}
public void setImageId(int imageId) {
this.imageId = imageId;
}
public String getImageName() {
return imageName;
}
public void setImageName(String imageName) {
this.imageName = imageName;
}
}
4、写一个Position接口备用,用于存放当前点击的imagebutton
public interface Position {
public void getpostion(int position);
}
5、为GridView 自定义Adapter
public class GridViewAdapter extends BaseAdapter {
private ArrayList<GridItem> gridItemList; //gridItem的集合
private Context context;
private LayoutInflater layoutInflater;
private Position pos;
public GridViewAdapter(Context context, String[] imageNames, int[] imageIds,Position position) {
super();
this.context = context;
gridItemList = new ArrayList<GridItem>();
this.pos=position;
layoutInflater = LayoutInflater.from(context);
for (int i = 0; i < imageIds.length; i++) { //将传过来的图片路径和文字放到集合中
GridItem picture = new GridItem(imageIds[i], imageNames[i]);
gridItemList.add(picture);
}
}
@Override
public int getCount() {
// TODO Auto-generated method stub
if (null != gridItemList) {
return gridItemList.size();
} else {
return 0;
}
}
@Override
public GridItem getItem(int position) {
// TODO Auto-generated method stub
return gridItemList.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder viewHolder;
if (convertView == null) {
convertView=layoutInflater.inflate(R.layout.grid_item, null);
viewHolder=new ViewHolder();
viewHolder.imageBtn=(ImageButton)convertView.findViewById(R.id.imBtn_griditem_image);
viewHolder.imageName=(TextView)convertView.findViewById(R.id.tv_griditem_imgname);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
//为每个item的每个imagebutton设置点击事件,并把当前position放到接口中
viewHolder.imageBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
pos.getpostion(position);
}
});
viewHolder.imageBtn.setImageResource(gridItemList.get(position).getImageId());
viewHolder.imageName.setText(gridItemList.get(position).getImageName());
return convertView;
}
class ViewHolder {
public ImageButton imageBtn;
public TextView imageName;
}
}
6、MainActivity实现Position
public class MainActivity extends Activity implements Position{
private final int TENCENT = 0;
private final int SINA = 1;
private final int WXFRIEND = 2;
private final int WXQUAN = 3;
private final int MESSAGE = 4;
private final int EMAIL = 5;
private GridView gridView;
private AlertDialog dialog ;
private int shareTencent = 0;
private int shareSina = 1;
private String[] imageNames = { "腾讯微博", "新浪微博", "微信好友", "微信朋友圈", "短信", "邮件" };
private int[] imageIds = { R.drawable.share_tencent_btn_selector,
R.drawable.share_sina_btn_selector,
R.drawable.share_weixin_btn_selector,
R.drawable.share_weixin_quan_btn_selector,
R.drawable.share_message_btn_selector,
R.drawable.share_email_btn_selector };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//此处也可以加载其他页面,放一个button,点击button弹出dialog,本人做的是一加载就弹出dialog
setContentView(R.layout.alertdialog_gridview);
buildDialog();
}
private void buildDialog() {
gridView = (GridView) LayoutInflater.from(this)
.inflate(R.layout.alertdialog_gridview, null)
.findViewById(R.id.gv_share_image);
gridView.setAdapter(new GridViewAdapter(this, imageNames, imageIds,
this));
dialog = new AlertDialog.Builder(this).setView(gridView)
.setTitle("分享到").create();
dialog.show();
}
/**重写getposition方法*/
@Override
public void getpostion(int position) {
// TODO Auto-generated method stub
switch (position) {
case TENCENT:
// 腾讯微博分享。检查网络并跳转界面
//在此处写点击事件0。。。。
dialog.dismiss();
break;
case SINA:
// 新浪微博分享。检查网络并跳转界面
//在此处写点击事件1。。。。
dialog.dismiss();
break;
case WXFRIEND:
// 微信好友分享
//在此处写点击事件2。。。。
dialog.dismiss();
break;
case WXQUAN:
// 微信圈分享
//在此处写点击事件3。。。。
dialog.dismiss();
break;
case MESSAGE:
// 短信分享
//在此处写点击事件4。。。。
dialog.dismiss();
break;
case EMAIL:
// 邮件分享
//在此处写点击事件5。。。。
dialog.dismiss();
break;
}
}
相关文章推荐
- jquery如何在页面加载完成后模拟出一个鼠标点击事件?
- 点击表格的单元格时实现变颜色,通过for循环为每个单元格添加一个onclick事件
- 点击新增按钮,弹出对话框,并且对话框加载另外一个页面的内容的具体实现
- 一个iframe,点击每个tab加载相应的页面进来iframe
- android解决gridview中点击ImageButton事件---花了一个下午找答案,多篇文章合集
- RecyclerView的基本用法 (一个控件实现ListView, GridView等效果)+接口回调点击事件
- 如何实现返回上一个页面,就像点击浏览器的返回按钮一般
- 实现一个EditText中间有字,字两边都可点击触发事件的效果
- AJAX实现不刷新页面点击按钮在目标位置加载目标内容
- 写一个HTML页面,实现以下功能,左键点击页面时显示“您好”,右键点击 时显示“禁止右键”。并在2分钟后自动关闭页面。
- echarts图表点击事件之跳转页面和加载页面
- RecyclerView实现分割线、点击事件、条目加载动画
- 当一个页面全部加载完才触发的事件
- Gridview中点击编辑实现页面跳转的几种方式总结
- Web前端面试指导(四十二):如何在页面上实现一个圆形的可点击区域?
- app每个页面都有一个相同的浮层控件 实现思路
- asp.net在事件中启动线程来打开一个页面的实现方法
- TextView加载HTML数据(网络图片以及图片点击事件的实现)
- echarts图表点击事件之跳转页面和加载页面
- GridView中如何实现双重点击事件