Android自定义popuwindow嵌套listview

来源:互联网 发布:ubuntu ifconfig 安装 编辑:程序博客网 时间:2024/06/06 02:26

前言:先声明,项目源自csdn上,其他网站扒过去的请在csdn上搜索“Android自定义popuwindow嵌套listview”标题,下载也是一样!如果在其他网站上找到该篇文章来问我哪里可以下载的,你先做好被叼的准备,因为只有csdn上有!


一、自定义类

import java.util.ArrayList;import java.util.List;import android.content.Context;import android.graphics.drawable.BitmapDrawable;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.view.ViewGroup.LayoutParams;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.ListView;import android.widget.PopupWindow;import android.widget.PopupWindow.OnDismissListener;import android.widget.TextView;/** * 自定义popuwindow * @author Alan <br/> * 2015-9-24 <br/> * 508181017@qq.com */public class CustomListPopupWindow extends PopupWindow implements OnDismissListener{private ListView mListView;private List<UserModel> mUserModels=new ArrayList<UserModel>();private ItemClickCallBack mItemCallBack;private Context mContext;private int checkedUId=-1;private View rootView;private DataAdapter mAdapter=null;/** *  * @param context * @param mUserModels 数据集 * @param checkedUId 被选中的item * @param mItemCallBack item的点击事件 */public CustomListPopupWindow(Context context,List<UserModel> mUserModels,int checkedUId,ItemClickCallBack mItemCallBack){super();this.mContext=context;this.mUserModels=mUserModels;this.checkedUId=checkedUId;this.mItemCallBack=mItemCallBack;initPop();}private void initPop() {// TODO Auto-generated method stubrootView = LayoutInflater.from(mContext).inflate(R.layout.list_popupwindow, null);mListView=(ListView) rootView.findViewById(R.id.lv_pop_datas);this.setContentView(rootView);        this.setWidth(LayoutParams.FILL_PARENT);        this.setHeight(LayoutParams.FILL_PARENT);        this.setFocusable(true);        this.setOnDismissListener(this);        this.setBackgroundDrawable(new BitmapDrawable());        //this.setAnimationStyle(animStyle);        this.setContentView(rootView);        this.mAdapter=new DataAdapter();        this.mListView.setAdapter(mAdapter);        this.mListView.setOnItemClickListener(new OnItemClickListener() {                     @Override            public void onItemClick(AdapterView parent, View view,                    int position, long id) {                if (mItemCallBack != null) {                UserModel user=mUserModels.get(position);                mItemCallBack.callBack(user);                }            }        });}private class DataAdapter extends BaseAdapter {        class ViewHolder {            TextView tv_ischecked;            TextView tv_name;            ImageView iv_ischecked;            ImageView iv_head;        }                                @Override        public int getCount() {            if (mUserModels != null) {                return mUserModels.size();            }            return 0;        }         @Override        public Object getItem(int position) {            if (mUserModels != null) {                return mUserModels.get(position);            }            return null;        }         @Override        public long getItemId(int position) {            return position;        }         @Override        public View getView(int position, View convertView, ViewGroup parent) {            ViewHolder viewHolder;            UserModel uModel=mUserModels.get(position);            if (convertView == null) {                viewHolder = new ViewHolder();                convertView = LayoutInflater.from(mContext).inflate(R.layout.block_poplistview_item, null);                                viewHolder.tv_ischecked= (TextView) convertView.findViewById(R.id.tv_ischecked);                viewHolder.tv_name= (TextView) convertView.findViewById(R.id.tv_name);                viewHolder.iv_ischecked= (ImageView) convertView.findViewById(R.id.iv_ischecked);                viewHolder.iv_head= (ImageView) convertView.findViewById(R.id.iv_head);                convertView.setTag(viewHolder);            } else {                viewHolder = (ViewHolder) convertView.getTag();            }            //绑定数据            viewHolder.tv_ischecked= (TextView) convertView.findViewById(R.id.tv_ischecked);            viewHolder.tv_name.setText(uModel.getuName());            viewHolder.iv_ischecked= (ImageView) convertView.findViewById(R.id.iv_ischecked);            if (checkedUId==uModel.getuId()) {            viewHolder.tv_ischecked.setVisibility(View.VISIBLE);            viewHolder.iv_ischecked.setVisibility(View.VISIBLE);}else{viewHolder.tv_ischecked.setVisibility(View.GONE);            viewHolder.iv_ischecked.setVisibility(View.GONE);}                        return convertView;        }    }     public interface ItemClickCallBack {        void callBack(UserModel userModel);    }             private int dp2Px(Context context, float dp) {        final float scale = context.getResources().getDisplayMetrics().density;        return (int) (dp * scale + 0.5f);    }@Overridepublic void onDismiss() {// TODO Auto-generated method stub}}


二、布局main.xml,item.xml,popupwindow.xml

1、main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/mainLayout"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <Button        android:id="@+id/button"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="自定义popuwindow" /></LinearLayout>
2、block_poplistview_item.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:layout_gravity="center"    android:layout_margin="10dp"    android:gravity="center" >    <ImageView        android:id="@+id/iv_head"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:src="@drawable/mainpage_group_icon_cartoon" />    <LinearLayout        android:layout_width="0dp"        android:layout_height="fill_parent"        android:layout_gravity="center"        android:layout_marginLeft="10dp"        android:layout_weight="1"        android:orientation="vertical" >        <TextView            android:id="@+id/tv_ischecked"            android:layout_width="wrap_content"            android:layout_height="0dp"            android:layout_weight="1"            android:gravity="center_vertical"            android:text="当前机器人"            android:visibility="gone"            android:textColor="#ff0000" />        <TextView            android:id="@+id/tv_name"            android:layout_width="wrap_content"            android:layout_height="0dp"            android:layout_weight="1"            android:gravity="center_vertical"            android:text="张三" />    </LinearLayout>    <ImageView        android:id="@+id/iv_ischecked"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:visibility="gone"        android:src="@drawable/icon_poplist_item_checked" /></LinearLayout>

3、list_popupwindow.xml
<?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:background="@drawable/bg_transparent"    android:orientation="vertical" >    <TextView        android:layout_width="fill_parent"        android:layout_height="0dp"        android:layout_weight="1" />    <ListView        android:id="@+id/lv_pop_datas"        android:layout_width="fill_parent"        android:layout_height="0dp"        android:layout_weight="2"        android:background="@android:color/white" /></LinearLayout>

三、实体类

UserModel.class

/** * 用户实体类 * @author Alan <br/> * 2015-9-24 <br/> * 508181017@qq.com */public class UserModel {private int uId; //用户idprivate String uName; //用户名private String headImg; //用户头像public int getuId() {return uId;}public void setuId(int uId) {this.uId = uId;}public String getuName() {return uName;}public void setuName(String uName) {this.uName = uName;}public String getHeadImg() {return headImg;}public void setHeadImg(String headImg) {this.headImg = headImg;}}
四、调用

MainActivity.class

import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.view.View;import android.widget.Button;import com.hhb.popupwindow.CustomListPopupWindow.ItemClickCallBack;public class MainActivity extends Activity implements ItemClickCallBack{private Button myButton;private List<UserModel> mUserModels=new ArrayList<UserModel>();CustomListPopupWindow mPopupWindow;private ItemClickCallBack mCallBack;private int mCheckedUId=3;private Context mContext;public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);myButton = (Button) findViewById(R.id.button);mCallBack=this;mContext=this;initData();//监听按钮myButton.setOnClickListener(new Button.OnClickListener() {@Overridepublic void onClick(View arg0) {mPopupWindow=new CustomListPopupWindow(mContext, mUserModels,mCheckedUId, mCallBack);mPopupWindow.showAsDropDown(myButton);}});}void initData(){UserModel user=null;user=new UserModel();user.setuId(1);user.setuName("张三");mUserModels.add(user);user=new UserModel();user.setuId(2);user.setuName("张2");mUserModels.add(user);user=new UserModel();user.setuId(3);user.setuName("张3");mUserModels.add(user);user=new UserModel();user.setuId(4);user.setuName("张4");mUserModels.add(user);user=new UserModel();user.setuId(5);user.setuName("张5");mUserModels.add(user);user=new UserModel();user.setuId(6);user.setuName("张6");mUserModels.add(user);user=new UserModel();user.setuId(7);user.setuName("张7");mUserModels.add(user);user=new UserModel();user.setuId(8);user.setuName("张8");mUserModels.add(user);}@Overridepublic void callBack(UserModel userModel) {// TODO Auto-generated method stubmCheckedUId=userModel.getuId();mPopupWindow.dismiss();}}
五、下载地址:http://download.csdn.net/detail/shi508181017/9136803

1 0
原创粉丝点击