alertdilog加载一个gridview页面并实现gridView中每个imagebutton的点击事件

效果图:点击可执行点击事件



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;
}
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值