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}}
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
- Android自定义popuwindow嵌套listview
- Android中自定义popuWindow
- Android中popuwindow中使用listview
- android自定义dialog嵌套listview自适应屏幕
- android----popuwindow的使用,自定义的方式
- Android自定义View_底部弹出Popuwindow
- ScrollView嵌套自定义ListView
- android popuwindow
- android popuwindow
- android listview+popuwindow动态显示遇到的问题
- Android自定义ListView,GridView嵌套防止自动滚动
- Android 中ListView 嵌套 ListView
- Android listview 中嵌套 listview
- Android UI自定义Spinner下拉框(用popuwindow实现)
- Android UI自定义Spinner下拉框(用popuwindow实现)
- Android 继承于PopuWindow的自定义弹出窗体
- android ScrollView嵌套ListView
- Android ExpandableListView嵌套ListView
- 树形管理工具-美美哒
- firebug重新载入页面获取源码
- Dialogfragment的使用
- The Log-Structured Merge-Tree(译):上
- Mac OS X 启用 Web 服务器
- Android自定义popuwindow嵌套listview
- mysql中的多行查询结果合并成一个
- MySQL必知必会笔记(二)SELECT语句 检索 排序 过滤 通配符搜索 正则表达式搜索
- 集合collection总结
- 解决 Android中用里ScrollView 之后 Activity 中的 onTouchEvent 失效问题
- HDU 1238 Substrings(KMP)
- 不得不了解的四大作用域:application,session,request,page
- 关于android封装代码问题
- placeholder样式写法