`
flycomos.lee
  • 浏览: 280650 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

实现在popwindow中展示listview列表

阅读更多

之前我实现了在listview中显示图片和checkbox,具体看这儿:http://gqdy365.iteye.com/blog/992340

接下来我将上述listview添加到popupwindow窗口中。关于这个listview我就再不多说了,主要是实现popupwindow和美化popupwindow。

先看看我做截图:



1、创建一个popupwindow,并设置相应的样式。

Java代码  收藏代码
  1. private   void  popAwindow(View parent) {  
  2.         if  (window ==  null ) {  
  3.             LayoutInflater lay = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);  
  4.             View v = lay.inflate(R.layout.popupwindow, null );  
  5.             v.setBackgroundDrawable(getResources().getDrawable(R.drawable.rounded_corners_view));  
  6.               
  7.             //初始化按钮   
  8.             submit = (Button) v.findViewById(R.id.submit);  
  9.             submit.setOnClickListener(submitListener);  
  10.             cancel = (Button) v.findViewById(R.id.cancel);  
  11.             cancel.setOnClickListener(cancelListener);  
  12.               
  13.             //初始化listview,加载数据。   
  14.             list=(ListView)v.findViewById(R.id.lv);  
  15.             MyAdapter adapter=new  MyAdapter(Main. this );  
  16.             list.setAdapter(adapter);  
  17.             list.setItemsCanFocus(false );  
  18.             list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);  
  19.             list.setOnItemClickListener(listClickListener);  
  20.               
  21.             window = new  PopupWindow(v,  500 , 260 );  
  22.         }  
  23.           
  24.         //设置整个popupwindow的样式。   
  25.         window.setBackgroundDrawable(getResources().getDrawable(R.drawable.rounded_corners_pop));  
  26.         //使窗口里面的空间显示其相应的效果,比较点击button时背景颜色改变。   
  27.         //如果为false点击相关的空间表面上没有反应,但事件是可以监听到的。   
  28.         //listview的话就没有了作用。   
  29.         window.setFocusable(true );  
  30.         window.update();  
  31.         window.showAtLocation(parent, Gravity.CENTER_VERTICAL, 0 0 );  
  32.     }  
  33.   
  34.     OnItemClickListener listClickListener = new  OnItemClickListener() {  
  35.         @Override   
  36.         public   void  onItemClick(AdapterView<?> parent, View view,  int  position,  
  37.                 long  id) {  
  38.             ViewHolder vHollder = (ViewHolder) view.getTag();  
  39.             // 在每次获取点击的item时将对于的checkbox状态改变,同时修改map的值。   
  40.             vHollder.cBox.toggle();  
  41.             MyAdapter.isSelected.put(position, vHollder.cBox.isChecked());  
  42.         }  
  43.     };  


给按钮添加监听事件:

Java代码  收藏代码
  1. OnClickListener submitListener =  new  OnClickListener() {  
  2.         @Override   
  3.         public   void  onClick(View v) {  
  4.             //这儿可以写提交数据的代码。   
  5.             closeWindow();  
  6.         }  
  7.     };  
  8.   
  9.     OnClickListener cancelListener=new  OnClickListener(){  
  10.         @Override   
  11.         public   void  onClick(View v){  
  12.             closeWindow();  
  13.         }  
  14.     };  
  15.       
  16.     private   void  closeWindow(){  
  17.         //将每个checkbox的标记改为false,以便下次弹出window时是初始的状态。   
  18.         for  ( int  j =  0 ; j < MyAdapter.isSelected.size(); j++) {  
  19.             MyAdapter.isSelected.put(j, false );  
  20.             ViewHolder vHollder = (ViewHolder) list.getChildAt(j).getTag();  
  21.             vHollder.cBox.setChecked(false );  
  22.         }  
  23.         //提交数据时关闭popupwindow。   
  24.         if  (window !=  null ) {  
  25.             window.dismiss();  
  26.         }  
  27.     }  




在layout中新建popupwindow.xml文件,具体内容如下,主要是对window的布局:

Java代码  收藏代码
  1. <?xml version= "1.0"  encoding= "utf-8" ?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"   
  3.     android:orientation="vertical"   
  4.     android:layout_width="fill_parent"   
  5.     android:layout_height="fill_parent" >  
  6.     <TextView  
  7.         android:id="@+id/tip"    
  8.         android:layout_width="wrap_content"    
  9.         android:layout_height="wrap_content"   
  10.         android:layout_gravity="center"   
  11.         android:textSize="18dip"   
  12.         android:background="@drawable/rounded_corners_list"   
  13.         android:text="这是一个popupWindow的例子" />  
  14.         <!-- 如果layout_width的值为fill_parent时,居中要用android:gravity="center" -->  
  15.     <ListView  
  16.         android:id="@+id/lv"   
  17.         android:layout_width="fill_parent"    
  18.         android:layout_height="wrap_content"   
  19.         android:background="@drawable/rounded_corners_list" />  
  20.     <LinearLayout  
  21.         android:orientation="horizontal"   
  22.         android:layout_gravity="center"   
  23.         android:layout_width="wrap_content"   
  24.         android:layout_height="wrap_content"   
  25.         android:background="@drawable/rounded_corners_list" >  
  26.         <Button   
  27.             android:id="@+id/submit"    
  28.             android:layout_width="100dip"    
  29.             android:layout_height="50dip"    
  30.             android:text="提交" />  
  31.         <Button   
  32.             android:id="@+id/cancel"    
  33.             android:layout_width="100dip"    
  34.             android:layout_height="50dip"    
  35.             android:text="取消" />  
  36.     </LinearLayout>  
  37. </LinearLayout>  



其中listView的布局的布局和实现请参考文章开头提到的另一篇文章。
新建rounded_corners_pop.xml,用于自定义窗口的样式文件,具体内容如下:

Java代码  收藏代码
  1. <?xml version= "1.0"  encoding= "utf-8" ?>  
  2. <shape xmlns:android="http://schemas.android.com/apk/res/android" >  
  3.     <solid android:color="#ffffffff"  />  
  4.     <stroke android:width="3dp"  color= "#ffff8080"  />  
  5.     <corners android:radius="10dp"  />  
  6.     <padding   
  7.         android:left="3dp"   
  8.         android:top="3dp"    
  9.         android:right="3dp"   
  10.         android:bottom="3dp"  />  
  11. </shape>  


这个就可以实现圆角的样式,周围的白边是通过在白的样式上面叠加黑色的来实现的。
其他样式文件大家可以参考上面的rounded_corners_pop.xml自己写。

2、在main.xml中添加按钮,一个用于显示window,一个用于隐藏window

Java代码  收藏代码
  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="fill_parent"   
  5.     android:layout_height="fill_parent"   
  6.     android:id="@+id/lmain"   
  7.     >  
  8.     <Button   
  9.         android:id="@+id/myButton1"    
  10.         android:layout_width="100dip"    
  11.         android:layout_height="50dip"    
  12.         android:text="显示" />  
  13.     <Button   
  14.         android:id="@+id/myButton2"    
  15.         android:layout_width="100dip"    
  16.         android:layout_height="50dip"    
  17.         android:text="隐藏" />  
  18. </LinearLayout>  


在activity中初始化这两个按钮,并添加监听事件:

Java代码  收藏代码
  1. OnClickListener bPop =  new  OnClickListener() {  
  2.     @Override   
  3.     public   void  onClick(View v) {  
  4.         popAwindow(v);  
  5.     }  
  6. };  
  7.   
  8. OnClickListener boff = new  OnClickListener() {  
  9.     @Override   
  10.     public   void  onClick(View v) {  
  11.         if (window!= null ){  
  12.             window.dismiss();  
  13.         }  
  14.     }  
  15. }; 
分享到:
评论
2 楼 tan2416 2013-01-04  
回复看看。。。。。
1 楼 yahier 2012-08-13  
Q1.popupwindow中的listview item点击无反应
  解决方案:
        infoPopup.setFocusable(true);
        infoPopup.update(); 

相关推荐

    popWindow+Listview的实现

    在Android开发中,`popWindow`(PopupWindow)和`ListView`是两个常见的组件,用于创建弹出式菜单和展示可滚动的列表项。在这个项目中,开发者将`ListView`嵌入到`popWindow`中,以实现购物车功能,当用户点击时,...

    Android使用popwindow弹窗显示listview表格

    `ListView`是一个可以展示多行数据的控件,通常用于显示列表或表格形式的数据。要使用`ListView`,你需要创建一个适配器(如`ArrayAdapter`或`BaseAdapter`),将数据绑定到`ListView`的各个条目上。每个条目可以...

    popwindow+listview

    在Android开发中,`PopWindow`和`ListView`是两个常用组件,它们分别用于实现弹出窗口和列表显示。在本项目中,"popwindow+listview"的封装结合了两者的优势,创建了一个可定制化的下拉菜单或者悬浮窗口,其中包含了...

    安卓下拉popwindow下拉+listview

    安卓自定义下拉列表popwindow实现下拉+listview,不加动画很好的下拉格式,网上资料综合的例子,项目中用到了,可以自定义下拉的背景,等等一系列的扩展,感觉不错传上供分享,帮到有用的给个赞,没用的就算了...

    点击listview的item在所点击的item的上边弹出popwindow

    在这个场景中,我们需要实现的功能是:当用户点击ListView中的某个条目时,一个PopWindow会从所点击的条目上方弹出,提供类似QQ消息长按后的删除选项。以下将详细讲解如何实现这一功能。 首先,我们需要创建一个...

    popwindow+listview多选

    在实现多选功能时,我们通常会在`ListView`的每一项中加入`CheckBox`。`CheckBox`是Android中的复选框组件,用户可以通过点击来选择或取消选择。结合`OnCheckedChangeListener`,我们可以监听到`CheckBox`状态的变化...

    Listview侧滑删除(popwindow)

    在Android开发中,ListView是一种常用的组件,用于展示可滚动的多行数据列表。"Listview侧滑删除(popwindow)"是一个常见的交互设计,允许用户通过在列表项上进行侧滑操作来触发一个弹出窗口(PopWindow),从而实现...

    android下拉列表样式筛选组件,仿美团popwindow实现

    `PopWindow`是Android中的一个非常实用的组件,它可以在屏幕上的任意位置弹出一个小窗口,通常用于展示更多的操作选项或者快速设置。在本案例中,我们将使用`PopWindow`来实现下拉筛选菜单。 1. **创建布局文件**:...

    PopWindow实现多级菜单显示

    在Android开发中,`PopWindow`是一个非常实用的组件,常用于实现各种临时弹出窗口,比如下拉菜单、快捷操作等。本教程将详细讲解如何利用`PopWindow`实现多级菜单的显示,这对于提升用户界面的交互性和便捷性至关...

    Listview侧滑删除(使用popwindow)

    6. **异常处理**:在实现过程中,要确保处理好各种异常情况,例如空指针异常、数据源为空等,以防止程序崩溃。 7. **优化性能**:在处理大量数据时,要考虑到ListView的性能问题,如使用ViewHolder来减少视图复用的...

    android Listview仿QQ长按Itme弹出popwindos菜单

    ListView通过Adapter来填充数据,Adapter负责将数据转化为视图(View)并显示在ListView中。当用户长按时,我们需要监听ListView的OnItemLongClickListener事件。 1. **设置OnItemLongClickListener**:在Activity...

    级联菜单,两级菜单自定义实现提供多种方式PopWindow,Fragment引用.zip

    下面我们将详细探讨这两种技术以及它们在实现级联菜单中的应用。 首先,PopWindow是Android中一种轻量级的弹出窗口,它可以浮现在Activity之上,展示临时或辅助信息。在级联菜单中,PopWindow常用于创建下拉列表的...

    popwindow下拉效果

    在Android应用设计中,PopWindow经常被用来实现各种交互效果,比如下拉菜单、快捷操作面板等。本教程将详细介绍如何在Android中实现一个PopWindow的下拉效果。 首先,我们需要了解PopWindow的基本结构。PopWindow由...

    PopupWindow+ListView

    在Android开发中,`PopupWindow` 和 `ListView` 是两种常用组件,它们分别用于实现弹出窗口和可滚动列表的功能。结合使用时,可以创建出交互性更强的UI设计,如下拉菜单、浮层选择器等。让我们深入探讨如何在Android...

    安卓封装PopWindow实现下拉菜单

    - 在PopWindow中填充数据,比如设置ListView的Adapter,这样下拉菜单的选项就能展示出来。同时,你需要处理点击事件,当用户选择某个选项时,执行相应的操作。 4. **显示和隐藏PopWindow**: - 显示PopWindow可以...

    PopWindowListView

    标题"PopWindowListView"表明我们将讨论如何在`PopWindow`中嵌入一个列表视图(ListView),并且描述中提到的"popwindow背景半透明"暗示我们将关注如何设置`PopWindow`的背景透明度。 首先,我们来了解`PopWindow`...

    listview中的单选按钮多选按钮

    在ListView中集成单选按钮(RadioButton)和多选按钮(CheckBox)是常见的需求,例如在创建选择列表、设置菜单等场景。本篇文章将深入探讨如何在ListView中实现单选与多选功能,并解决复用问题。 首先,我们需要...

    一个popwindow的小demo

    在“一个popwindow的小demo”中,我们的目标是创建一个包含所有省份的PopWindow,用户可以选择任意省份,实现功能可能是设置或查询省份信息。这个PopWindow由多个TextView组成,每个TextView代表一个省份,当用户...

    下拉popwindow

    5. **数据添加**:在ListView中添加数据,需要通过Adapter的notifyDataSetChanged()方法通知ListView数据集已更新,从而触发ListView重新渲染。数据可以动态加载,例如从网络或数据库获取。 6. **条目点击事件处理*...

    Android封装popwindow类(下拉菜单弹出和收缩效果)

    在Android开发中,`PopWindow`是一个非常实用的组件,常用于实现各种临时弹出窗口的效果,如下拉菜单、工具提示等。本教程将详细讲解如何封装一个`PopWindow`,实现下拉菜单的弹出和收缩效果。 首先,我们需要了解`...

Global site tag (gtag.js) - Google Analytics