安卓 Activity 给 popupwindow 传值

全局变量类中的代码如下:

 1 package com.cn.gordon.exhibition.walk.application;
 2 
 3 import android.app.Application;
 4 
 5 public final class GlobalVaries extends Application {
 6 private String telNum;
 7 
 8 public String getTelNum() {
 9 return telNum;
10 }
11 
12 public void setTelNum(String telNum) {
13 this.telNum = telNum;
14 }
15 
16 @Override
17 public void onCreate() {
18 telNum = " ";
19 super.onCreate();
20 }
21 }

其中使用全局变量需要在AndroidMenifest.xml中进行一个声明:

 1 <application
 2 android:icon="@drawable/ic_launcher"
 3 android:label="@string/app_name"
 4 android:theme="@style/AppTheme"
 5 android:allowBackup="true"
 6 android:name="com.cn.gordon.exhibition.walk.application.GlobalVaries">
 7 <activity
 8 android:name=".LoadingActivity"
 9 android:screenOrientation="portrait"
10 android:theme="@android:style/Theme.Black.NoTitleBar" >
11 <intent-filter>

.........以上是部分代码,其中android:name="com.cn.gordon.exhibition.walk.application.GlobalVaries"就是声明全局变量的使用。

以下是调用popupwindow的MybusicardholderActivity页面布局,名称是:mybusicardholder.xml

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3 android:layout_width="match_parent"
 4 android:layout_height="match_parent"
 5 android:orientation="vertical"
 6 android:background="#FFFFFFFF" >
 7 
 8 <RelativeLayout
 9 android:layout_width="match_parent"
10 android:layout_height="50dip"
11 android:background="#FF333333" >
12 
13 <TextView
14 android:layout_width="wrap_content"
15 android:layout_height="wrap_content"
16 android:layout_centerInParent="true"
17 android:text="@string/mybusinesscardholder"
18 android:textColor="#FFFFFFFF"
19 android:textSize="20sp" />
20 
21 <Button
22 android:layout_width="80dip"
23 android:layout_height="50dip"
24 android:id="@+id/btn_menu"
25 android:background="@drawable/btn_login_back"
26 />
27 <Button
28 android:layout_width="30dip"
29 android:layout_height="30dip"
30 android:id="@+id/btn_query"
31 android:layout_centerVertical="true"
32 android:layout_alignParentRight="true"
33 android:layout_marginRight="20dip"
34 android:background="@drawable/querybtn_pressed_bg" />
35 </RelativeLayout>
36 <ListView 
37 android:layout_width="fill_parent"
38 android:layout_height="wrap_content"
39 android:id="@+id/mybusicardlistView"
40 android:divider="@color/lightgray"
41 android:dividerHeight="1dip"
42 android:footerDividersEnabled="true"
43 android:headerDividersEnabled="true"
44 >
45 </ListView> 
46 </LinearLayout>

MybusicardholderActivity中的源码如下:

/**
 * @author Seawin龙
 */
package com.cn.gordon.exhibition.walk.activity;
import java.util.ArrayList;
import java.util.HashMap;
import com.cn.gordon.exhibition.walk.application.GlobalVaries;
import com.cn.gordon.exhibition.walk.entity.MyBusiCardHolderBean;
import com.cn.gordon.exhibition.walk.popup.BusicardPopupWindow;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

/**
 * @author Seawin龙
 * 
 */
public class MybusicardholderActivity extends Activity {
    private ListView listView;
    private SimpleAdapter simpleAdapter;
    private String telNum;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mybusicardholder);
        GlobalVaries globalTelNum = (GlobalVaries)getApplication();
        init(globalTelNum);
        setAction();
    }
    /**
     * @author Seawin龙
     * @param globalTelNum 
     */
    public void init(final GlobalVaries globalTelNum) {
        
        listView = (ListView)findViewById(R.id.mybusicardlistView);
        ArrayList<HashMap<String, Object>> list;
        list = this.getItem();
        simpleAdapter = new SimpleAdapter(this,list , R.layout.busicardlistviewitem, new String[]{"companyname","getcardtime","exhibitionname","companyphonenum"}, new int[]{R.id.companyname,R.id.getcardtime,R.id.exhibitionname,R.id.companyphonenum});

        listView.setAdapter(simpleAdapter);
        listView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                ArrayList<MyBusiCardHolderBean> list = getmylist();
                MyBusiCardHolderBean bean = new MyBusiCardHolderBean();
                BusicardPopupWindow bpw = new BusicardPopupWindow(MybusicardholderActivity.this);
                int[] location = new int[2];
                arg1.getLocationOnScreen(location);
                bean = list.get(arg2);
                telNum = bean.getCompanyPhonenum();
                bpw.showAtLocation(getCurrentFocus(),0,location[0]+150, location[1]+20);
                globalTelNum.setTelNum(telNum.substring(3, telNum.length()));
                
                Toast.makeText(MybusicardholderActivity.this, telNum.substring(3, telNum.length()), Toast.LENGTH_SHORT).show();
            }
        });
    }
    private  ArrayList<MyBusiCardHolderBean> getmylist(){
         ArrayList<MyBusiCardHolderBean> list = new ArrayList<MyBusiCardHolderBean>();
         MyBusiCardHolderBean mbchBean = new MyBusiCardHolderBean();
         mbchBean.setCompanyName("深圳市远望谷信息技术股份有限公司");
         mbchBean.setGetcardTime("2014.08.11 11:52:08");
         mbchBean.setExhibitionName("物联网博览会");
         mbchBean.setCompanyPhonenum("电话:0755-26711633");
         list.add(0, mbchBean);
         MyBusiCardHolderBean mbchBean1 = new MyBusiCardHolderBean();
         mbchBean1.setCompanyName("大唐电信科技各分有限公司");
         mbchBean1.setGetcardTime("2014.08.11 12:20:05");
         mbchBean1.setExhibitionName("物联网博览会");
         mbchBean1.setCompanyPhonenum("电话:010-58919000");
         list.add(1, mbchBean1);
         MyBusiCardHolderBean mbchBean2 = new MyBusiCardHolderBean();
         mbchBean2.setCompanyName("天津中兴智联科技有限公司");
         mbchBean2.setGetcardTime("2014.08.11 08:50:12");
         mbchBean2.setExhibitionName("物联网博览会");
         mbchBean2.setCompanyPhonenum("电话:022-84809202");
         list.add(2, mbchBean2);
         MyBusiCardHolderBean mbchBean3 = new MyBusiCardHolderBean();
         mbchBean3.setCompanyName("美国意联科技有限公司");
         mbchBean3.setGetcardTime("2014.08.11 08:50:12");
         mbchBean3.setExhibitionName("物联网博览会");
         mbchBean3.setCompanyPhonenum("电话:+86-21-62122066");
         list.add(3, mbchBean3);
         MyBusiCardHolderBean mbchBean4 = new MyBusiCardHolderBean();
         mbchBean4.setCompanyName("深圳德卡科技有限公司");
         mbchBean4.setGetcardTime("2014.08.11 08:20:12");
         mbchBean4.setExhibitionName("物联网博览会");
         mbchBean4.setCompanyPhonenum("电话:400-888-7816");
         list.add(4, mbchBean4);
         return list;
    }
    public ArrayList<HashMap<String,Object>> getItem(){
         ArrayList<HashMap<String, Object>> item = new ArrayList<HashMap<String, Object>>();
         MyBusiCardHolderBean mbchBean = new MyBusiCardHolderBean();
         for (int i = 0; i < getmylist().size(); i++) {
             mbchBean = getmylist().get(i);
             HashMap<String, Object> map = new HashMap<String, Object>();
             map.put("companyname", mbchBean.getCompanyName());
             map.put("getcardtime", mbchBean.getGetcardTime());
             map.put("exhibitionname", mbchBean.getExhibitionName());
             map.put("companyphonenum", mbchBean.getCompanyPhonenum());
             item.add(map);
        }
         return item;
    }
    private void setAction() {
        
//        //点击了立即体验,通过获取本机的蓝牙作为唯一标识
//        btnMenu.setOnClickListener(new View.OnClickListener() {
//
//            @Override
//            public void onClick(View v) {
//                
//                //待完成......
//            }
//        });
//        btnSubmit.setOnClickListener(new View.OnClickListener() {
//
//            @Override
//            public void onClick(View v) {
//                if(checkET()){
//                    submit();
//                }
//
//            }
//        });
    }
}

以下是popupwindow的页面布局,名称:popupwindow_busicardholder.xml

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3 android:orientation="horizontal"
 4 android:layout_width="180dip"
 5 android:layout_height="50dip"
 6 android:gravity="center"
 7 android:background="@drawable/layout_sub_itempress_bg"
 8 >
 9 <Button
10 android:layout_width="60dip"
11 android:layout_height="50dip"
12 android:id="@+id/dailphonenumber"
13 android:layout_gravity="center"
14 android:background="@drawable/busicardholder_phonecall_press_bg">
15 </Button>
16 <Button
17 android:layout_width="60dip"
18 android:layout_height="50dip"
19 android:id="@+id/checkbusicard"
20 android:layout_gravity="center"
21 android:background="@drawable/busicardholder_checkcard_press_bg">
22 </Button>
23 <Button
24 android:layout_width="60dip"
25 android:layout_height="50dip"
26 android:id="@+id/checkcompany"
27 android:layout_gravity="center"
28 android:background="@drawable/busicardholder_phonecall_press_bg">
29 </Button>
30 </LinearLayout>

下面是popupwindow,具体名称是:BusicardPopupWindow

package com.cn.gordon.exhibition.walk.popup;

import com.cn.gordon.exhibition.walk.activity.R;
import com.cn.gordon.exhibition.walk.application.GlobalVaries;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.ColorDrawable;
import android.net.Uri;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.PopupWindow;
import android.widget.RelativeLayout.LayoutParams;

public class BusicardPopupWindow extends PopupWindow {
    private View contentView;   
    private String telNum="";
    public BusicardPopupWindow(final Activity context){
        LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        contentView = inflater.inflate(R.layout.popupwindow_busicardholder, null);
        //int h = context.getWindowManager().getDefaultDisplay().getHeight();
        int w = context.getWindowManager().getDefaultDisplay().getWidth();
        // 设置SelectPicPopupWindow的View
        this.setContentView(contentView);
        // 设置SelectPicPopupWindow弹出窗体的宽
        this.setWidth(w / 2 + 50);
        // 设置SelectPicPopupWindow弹出窗体的高
        this.setHeight(LayoutParams.WRAP_CONTENT);
        // 设置SelectPicPopupWindow弹出窗体可点击
        this.setFocusable(true);
        this.setOutsideTouchable(true);
        // 刷新状态
        this.update();
        // 实例化一个ColorDrawable颜色为半透明
        ColorDrawable dw = new ColorDrawable(0000000000);
        // 点back键和其他地方使其消失,设置了这个才能触发OnDismisslistener ,设置其他控件变化等操作
        this.setBackgroundDrawable(dw);
        // mPopupWindow.setAnimationStyle(android.R.style.Animation_Dialog);
        // 设置SelectPicPopupWindow弹出窗体动画效果
        //this.setAnimationStyle(R.style.AnimationPreview);
       Button btn_dailnumber = (Button)contentView.findViewById(R.id.dailphonenumber);
       Button btn_checkcard = (Button)contentView.findViewById(R.id.checkbusicard);
       Button btn_checkcompany = (Button)contentView.findViewById(R.id.checkcompany);
       btn_dailnumber.setOnClickListener(new OnClickListener() {
           final GlobalVaries globalTelNum = (GlobalVaries) context.getApplication();
            @Override
            public void onClick(View v) {
                if (globalTelNum!=null) {
                    
                    telNum = globalTelNum.getTelNum();
                }
                Uri uri = Uri.parse("tel:"+telNum);
                Intent intent = new Intent(Intent.ACTION_DIAL,uri);
                v.getContext().startActivity(intent);
                BusicardPopupWindow.this.dismiss(); 
            }
        });        
       btn_checkcard.setOnClickListener(new OnClickListener() {            
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                BusicardPopupWindow.this.dismiss(); 
            }
        });
       btn_checkcompany.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                BusicardPopupWindow.this.dismiss(); 
            }
        });                
    }    
    public void showPopupWindow(View parent) {  
        if (!this.isShowing()) {  
            // 以下拉方式显示popupwindow  
            this.showAsDropDown(parent, parent.getLayoutParams().width / 2, 18);  
        } else {  
            this.dismiss();  
        }  
    }  
}

本文主要是讲述Activity通过全局变量把数据给popupwindow。仅供参考。同时也感谢那些无私向互联网上发技术贴的童鞋。

参考资料:http://blog.csdn.net/feiyangxiaomi/article/details/9966215

http://blog.csdn.net/junjieking/article/details/7352571

http://blog.csdn.net/l_serein/article/details/6398342

http://bbs.csdn.net/topics/360052162

http://www.oschina.net/question/157182_46417

无论遇到什么问题,解决不了,那就找AndroidAPI。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

竖子敢尔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值