您的位置:首页 > 其它

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;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐