安卓ViewPager中Button点击事件弹出Dialog
首先页面采用ViewPager,在第一个页面中有一个按钮,要求点击这个页面上的按钮弹出一个对话框。
先贴出效果图:
分析难点:1、在ViewPager中,共有四个选项卡页,找到第一个页面中Button按钮。先贴出代码:
1 package com.example.acountrecorder; 2 import java.util.ArrayList; 3 import java.util.HashMap; 4 import java.util.List; 5 import com.example.adapter.MyPagerAdapter; 6 import com.example.entity.DishesMenu; 7 import com.example.service.MenuService; 8 import android.app.Activity; 9 import android.app.AlertDialog; 10 import android.content.DialogInterface; 11 import android.os.Bundle; 12 import android.support.v4.view.ViewPager; 13 import android.support.v4.view.ViewPager.OnPageChangeListener; 14 import android.view.LayoutInflater; 15 import android.view.Menu; 16 import android.view.View; 17 import android.view.View.OnClickListener; 18 import android.view.ViewGroup; 19 import android.widget.Button; 20 import android.widget.ListView; 21 import android.widget.RadioButton; 22 import android.widget.RadioGroup; 23 import android.widget.SimpleAdapter; 24 import android.widget.RadioGroup.OnCheckedChangeListener; 25 import android.widget.Toast; 26 27 public class MainActivity extends Activity { 28 29 private Button btnMoney,adddish; 30 private RadioButton dishes,choosedishbyhand,choosedishrandom,payrecorder; 31 private RadioGroup radioGroup; 32 private ListView listView; 33 private SimpleAdapter simpleAdapter; 34 private ViewPager vpager; 35 private int currIndex=0; 36 private ArrayList<View> listViews; 37 38 @Override 39 protected void onCreate(Bundle savedInstanceState) { 40 super.onCreate(savedInstanceState); 41 setContentView(R.layout.activity_main); 42 43 init(); 44 InitViewPager(); 45 doSthRelative(); 46 setAction(); 47 } 48 49 private void setAction() { 50 if (currIndex==0) { 51 //下面两句诗关键!!!! 52 View view1 = listViews.get(currIndex); 53 adddish = (Button) view1.findViewById(R.id.adddish); 54 adddish.setOnClickListener(new OnClickListener() { 55 @Override 56 public void onClick(View v) { 57 LayoutInflater inflater = getLayoutInflater(); 58 View layout = inflater.inflate(R.layout.dialog_adddish, 59 (ViewGroup) findViewById(R.id.dialog_dish)); 60 61 new AlertDialog.Builder(MainActivity.this).setTitle("").setView(layout).setPositiveButton("确定", 62 new DialogInterface.OnClickListener() { 63 @Override 64 public void onClick(DialogInterface dialog, int which) { 65 // TODO Auto-generated method stub 66 Toast.makeText(MainActivity.this, "dialog弹出来的", Toast.LENGTH_SHORT).show(); 67 } 68 } 69 70 ).setNegativeButton("取消", null).show(); 71 } 72 73 }); 74 } 75 76 } 77 78 private void init() { 79 btnMoney = (Button) findViewById(R.id.btn_money); 80 radioGroup = (RadioGroup) findViewById(R.id.radiogroup_item); 81 dishes = (RadioButton) findViewById(R.id.disheschoice); 82 choosedishbyhand = (RadioButton) findViewById(R.id.choosedishbyhand); 83 choosedishrandom = (RadioButton) findViewById(R.id.choosedishrandom); 84 payrecorder = (RadioButton) findViewById(R.id.paymentrecord); 85 //listView = (ListView) findViewById(R.id.checkdishes); 86 radioGroup.setOnCheckedChangeListener(rdgcc); 87 vpager = (ViewPager) findViewById(R.id.vPager); 88 } 89 90 private RadioGroup.OnCheckedChangeListener rdgcc = new OnCheckedChangeListener() { 91 92 @Override 93 public void onCheckedChanged(RadioGroup group, int checkedId) { 94 int r1 = dishes.getId(),r2 = choosedishbyhand.getId(),r3 = choosedishrandom.getId(),r4 = payrecorder.getId(); 95 if (r1==checkedId) { 96 Toast.makeText(MainActivity.this, dishes.getText().toString(), Toast.LENGTH_SHORT).show(); 97 currIndex = 0; 98 vpager.setCurrentItem(currIndex);//加载完页面后再加载页面上的元素 99 //adddish = (Button) findViewById(R.id.adddish); 100 }else if (r2==checkedId) { 101 Toast.makeText(MainActivity.this, choosedishbyhand.getText().toString(), Toast.LENGTH_SHORT).show(); 102 currIndex = 1; 103 vpager.setCurrentItem(currIndex); 104 }else if (r3==checkedId) { 105 Toast.makeText(MainActivity.this, choosedishrandom.getText().toString(), Toast.LENGTH_SHORT).show(); 106 currIndex = 2; 107 vpager.setCurrentItem(currIndex); 108 }else if (r4==checkedId) { 109 Toast.makeText(MainActivity.this, payrecorder.getText().toString(), Toast.LENGTH_SHORT).show(); 110 currIndex = 3; 111 vpager.setCurrentItem(currIndex); 112 } 113 } 114 }; 115 116 private void InitViewPager() { 117 vpager = (ViewPager) findViewById(R.id.vPager); 118 listViews = new ArrayList<View>(); 119 LayoutInflater mInflater = getLayoutInflater(); 120 listViews.add(mInflater.inflate(R.layout.mydishes, null)); 121 listViews.add(mInflater.inflate(R.layout.chosdishhandly, null)); 122 listViews.add(mInflater.inflate(R.layout.chosdishrandom, null)); 123 listViews.add(mInflater.inflate(R.layout.recorders, null)); 124 vpager.setAdapter(new MyPagerAdapter(listViews)); 125 vpager.setCurrentItem(0); 126 vpager.setOnPageChangeListener(new OnPageChangeListener() { 127 @Override 128 public void onPageSelected(int arg0) { 129 switch (arg0) { 130 case 0: 131 dishes.setChecked(true); 132 break; 133 case 1: 134 choosedishbyhand.setChecked(true); 135 break; 136 case 2: 137 choosedishrandom.setChecked(true); 138 break; 139 case 3: 140 payrecorder.setChecked(true); 141 break; 142 143 default: 144 break; 145 } 146 } 147 @Override 148 public void onPageScrolled(int arg0, float arg1, int arg2) { 149 } 150 @Override 151 public void onPageScrollStateChanged(int arg0) { 152 } 153 }); 154 } 155 private void doSthRelative(){ 156 if (currIndex==0) { 157 //首先查询数据库中是否有数据,有数据则加载数据 158 listView = (ListView)findViewById(R.id.allmydishes); 159 ArrayList<HashMap<String, Object>> listMap = new ArrayList<HashMap<String, Object>>(); 160 DishesMenu dish = new DishesMenu(); 161 MenuService menuService = new MenuService(MainActivity.this); 162 List<DishesMenu> listMenu = menuService.queryAll(); 163 if (listMenu!=null) { 164 for (int i = 0; i < listMenu.size(); i++) { 165 dish = listMenu.get(i); 166 HashMap<String, Object> map = new HashMap<String, Object>(); 167 map.put("dishname", dish.getDishname()); 168 map.put("dishprice", dish.getDishprice()); 169 listMap.add(map); 170 } 171 simpleAdapter = new SimpleAdapter(this,listMap, R.layout.checkdisheslistviewitem, new String[]{"dishname","dishprice"}, new int[]{R.id.display_dishname,R.id.display_dishprice}); 172 listView.setAdapter(simpleAdapter); 173 } 174 175 } 176 177 } 178 @Override 179 public boolean onCreateOptionsMenu(Menu menu) { 180 // Inflate the menu; this adds items to the action bar if it is present. 181 getMenuInflater().inflate(R.menu.main, menu); 182 return true; 183 } 184 185 }
其次是activitymain.xml代码:
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 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 <TextView 13 android:layout_width="wrap_content" 14 android:layout_height="wrap_content" 15 android:layout_centerInParent="true" 16 android:text="@string/title" 17 android:textColor="#FFFFFFFF" 18 android:textSize="20sp" /> 19 <Button 20 android:layout_width="40dip" 21 android:layout_height="40dip" 22 android:id="@+id/btn_money" 23 android:layout_centerInParent="true" 24 android:layout_alignParentRight="true" 25 android:layout_marginRight="20dip" 26 android:background="@drawable/moneypackage" /> 27 </RelativeLayout> 28 29 <RadioGroup 30 android:id="@+id/radiogroup_item" 31 android:layout_width="wrap_content" 32 android:layout_height="40dip" 33 android:orientation="horizontal"> 34 <RadioButton android:id="@+id/disheschoice" 35 android:layout_width="wrap_content" 36 android:layout_height="40dip" 37 android:layout_weight="1" 38 android:background="@drawable/rb_bg" 39 android:button="@null" 40 android:checked="true" 41 android:gravity="center" 42 android:text="@string/dishestochoose" 43 android:textColor="#FFFFFFFF" 44 android:textSize="18sp" 45 android:textStyle="bold" 46 /> 47 <RadioButton android:id="@+id/choosedishbyhand" 48 android:layout_width="wrap_content" 49 android:layout_height="40dip" 50 android:layout_weight="1" 51 android:background="@drawable/rb_bg" 52 android:button="@null" 53 android:checked="false" 54 android:gravity="center" 55 android:text="@string/choosedishbyhand" 56 android:textColor="#FFFFFFFF" 57 android:textSize="18sp" 58 android:textStyle="bold" 59 /> 60 <RadioButton android:id="@+id/choosedishrandom" 61 android:layout_width="wrap_content" 62 android:layout_height="40dip" 63 android:layout_weight="1" 64 android:background="@drawable/rb_bg" 65 android:button="@null" 66 android:checked="false" 67 android:gravity="center" 68 android:text="@string/choosedishrandom" 69 android:textColor="#FFFFFFFF" 70 android:textSize="18sp" 71 android:textStyle="bold" 72 /> 73 <RadioButton android:id="@+id/paymentrecord" 74 android:layout_width="wrap_content" 75 android:layout_height="40dip" 76 android:layout_weight="1" 77 android:background="@drawable/rb_bg" 78 android:button="@null" 79 android:checked="false" 80 android:gravity="center" 81 android:text="@string/paymentrecord" 82 android:textColor="#FFFFFFFF" 83 android:textSize="18sp" 84 android:textStyle="bold" 85 /> 86 </RadioGroup> 87 <android.support.v4.view.ViewPager 88 android:layout_width="wrap_content" 89 android:layout_height="wrap_content" 90 android:id="@+id/vPager" 91 android:layout_gravity="center" 92 android:background="#000000" 93 android:flipInterval="30" 94 android:persistentDrawingCache="animation" 95 /> 96 97 </LinearLayout>
第一个选项卡页面:
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:orientation="vertical" 6 android:background="#FFFF1565" 7 android:paddingBottom="@dimen/activity_vertical_margin" 8 tools:context=".MainActivity" > 9 10 11 <ListView 12 android:layout_width="match_parent" 13 android:layout_height="340dip" 14 android:id="@+id/allmydishes" 15 android:layout_marginTop="10dip" 16 > 17 18 </ListView> 19 <Button 20 android:layout_width="50dip" 21 android:layout_height="50dip" 22 android:background="@drawable/btn_add" 23 android:gravity="bottom" 24 android:id="@+id/adddish" 25 android:layout_marginTop="20dip" 26 android:layout_marginLeft="40dip" 27 /> 28 </LinearLayout>
还有dialog.xml页面:
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:orientation="vertical" 6 android:id="@+id/dialog_dish" 7 android:background="#00000000" > 8 9 <LinearLayout 10 android:layout_width="match_parent" 11 android:layout_height="wrap_content" 12 android:layout_marginLeft="10dip" 13 android:orientation="horizontal"> 14 <TextView 15 android:layout_width="wrap_content" 16 android:layout_height="wrap_content" 17 android:text="@string/diahname" 18 android:textColor="#FFFFFFFF" 19 android:textSize="16sp"> 20 </TextView> 21 <EditText 22 android:layout_width="200dip" 23 android:layout_height="wrap_content" 24 android:layout_marginLeft="10dip" 25 android:inputType="text" 26 android:textSize="16sp" 27 android:id="@+id/dish_addnewname"/> 28 </LinearLayout> 29 <LinearLayout 30 android:layout_width="match_parent" 31 android:layout_height="wrap_content" 32 android:layout_marginLeft="10dip" 33 android:orientation="horizontal"> 34 <TextView 35 android:layout_width="wrap_content" 36 android:layout_height="wrap_content" 37 android:text="@string/diahprice" 38 android:textColor="#FFFFFFFF" 39 android:textSize="16sp"> 40 </TextView> 41 <EditText 42 android:layout_width="200dip" 43 android:layout_height="wrap_content" 44 android:layout_marginLeft="10dip" 45 android:inputType="text" 46 android:textSize="16sp" 47 android:id="@+id/dish_addnewprice"/> 48 </LinearLayout> 49 </LinearLayout>
难点分析:2、AlertDialog的用法,详细查看AndroidAPI。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。