首页 > 其他分享 >基于上一篇实现的SimpleListPopupWindow<T>

基于上一篇实现的SimpleListPopupWindow<T>

时间:2023-04-06 22:05:08浏览次数:42  
标签:基于 一篇 item SimpleListPopupWindow context import android public view


这次是个简单的PopupWindow,快速迭代用。

import java.util.List;

import android.content.Context;
import android.view.View;
import android.widget.AdapterView;
import android.widget.LinearLayout.LayoutParams;
import android.widget.ListView;
import android.widget.PopupWindow;

import com.mb.bgfitting.App;
import com.mb.bgfitting.CommonAdapter;
import com.mb.bgfitting.ViewHolder;
import com.mb.bgfitting.app.R;

/**
 * 
 * @author pythoner
 * 
 */
public class SimpleListPopupWindow<T> extends PopupWindow {

	private Context context;
	private CommonAdapter<T> adapter;
	private List<T> beans;
	public SimpleListPopupWindow(Context context, View view, int width,List<T> b) {
		super(view, width, LayoutParams.WRAP_CONTENT, true);
		this.context = context;
		this.beans = b;
		this.setBackgroundDrawable(App.res.getDrawable(R.drawable.bg_popupwindow));
		this.setOutsideTouchable(true);
		this.setAnimationStyle(android.R.style.Animation_Dialog);
		// this.update();
		// this.setTouchable(true);
		// this.setFocusable(false);

		ListView listView = (ListView) view.findViewById(R.id.listView);
		listView.setAdapter(adapter = new CommonAdapter<T>(context, beans,R.layout.item_for_popupwindow_simple) {
			@Override
			public void setValues(ViewHolder helper, T item, int position) {
				helper.setText(R.id.item_0, item.toString());
			}
		});

		listView.setOnItemClickListener(new ListView.OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> pearnt, View view,
					int position, long id) {
				// TODO Auto-generated method stub
				dismiss();
				if (onItemClickListener != null) {
					onItemClickListener.onItemClick(position,beans.get(position));
				}
			}
		});

	}

	public interface OnItemClickListener<T> {
		void onItemClick(int position, T item);
	}

	OnItemClickListener<T> onItemClickListener;

	public void setOnItemClickListener(OnItemClickListener<T> onItemClickListener) {
		this.onItemClickListener = onItemClickListener;
	}

}



一个简单的Item:item_for_popupwindow_simple.xml


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="match_parent"
	android:layout_height="wrap_content"
	>
	
    <TextView 
        android:id="@+id/item_0"
        android:layout_width="match_parent"
		android:layout_height="wrap_content"
		android:paddingTop="8dp"
		android:paddingBottom="8dp"
		android:gravity="center"
		android:textColor="@color/base_text_black"
		android:textSize="@dimen/font_middle"
		android:singleLine="true"
        />
	
</RelativeLayout>




用法:


private void showPopWindow(List<String> list) {
		View view = LayoutInflater.from(context).inflate(R.layout.popupwindow_simple, null);
		final SimpleListPopupWindow<String> popupWindow = new SimpleListPopupWindow<String>(context,view, btn_appointmentIndex.getWidth(), list);
		popupWindow.showAsDropDown(btn_appointmentIndex, 0, 0);
		popupWindow.setOnItemClickListener(new SimpleListPopupWindow.OnItemClickListener<String>() {

			@Override
			public void onItemClick(int position,final String item) {
				// TODO Auto-generated method stub
				
			}
		});
	}




popupwindow_simple.xml:


<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/listView"
    android:layout_width="match_parent"
	android:layout_height="wrap_content"
	android:cacheColorHint="@android:color/transparent"
	android:listSelector="@color/base_gray"
    />

标签:基于,一篇,item,SimpleListPopupWindow,context,import,android,public,view
From: https://blog.51cto.com/u_5454003/6174217

相关文章

  • 基于WheelView自定义的DatePickerDialog
    本人利用WheelView写的一个DatePickerDialog(还有一个TimePickerDialog,本人忘了在写在哪个项目里了,等找到了也贴上来)先看图,有个直观的了解DatePickerDialog代码:importjava.util.Calendar;importcom.widget.wheel.NumericWheelAdapter;importcom.widge......
  • 基于MATLAB Simulink的三相感应电机动态数学建模仿真模型
    Three_Phase_Induction_Motor:基于MATLABSimulink的三相感应电机动态数学建模仿真模型。仿真条件:MATLABSimulinkR2015bYID:5380650367252800......
  • 基于非对称纳什谈判的多微网电能共享运行优化策略
    基于非对称纳什谈判的多微网电能共享运行优化策略MATLAB代码,电网技术文献复现:关键词:纳什谈判合作博弈 微网电转气-碳捕集 P2P电能交易交易   参考文档:《基于非对称纳什谈判的多微网电能共享运行优化策略》完美复现仿真平台:MATLABCPLEX+MOSEKIPOPT主要内容:该代码......
  • 基于扰动观测器的直流电机调速系统
    基于扰动观测器的直流电机调速系统,有计算公式,仿真模型,仿真结果,ad电路图,程序YID:69149648154053996......
  • blockchain | 基于ethers.js的ctf合约攻击模板
    blockchain|基于ethers.js的ctf合约攻击模板之前做题用的是truffle命令行和truffleexec来进行编写代码,封装的层级比较高,这个框架主要还是用来开发比较方便,看了大师傅的wp(https://www.seaeye.cn/archives/497.html)以后觉得还是得写一个自己用起来顺手的攻击模板。使用ethers......
  • BiSyn GAT+:用于基于方面的情绪分析的双语法感知图形注意力网络
    基于方面的情绪分析(ABSA)是一种细粒度的情绪分析任务,旨在调整方面和相应的情绪,以进行特定方面的情绪极性推断。这很有挑战性,因为一个句子可能包含多个方面或复杂的(例如,条件关系、协调关系或对抗关系)。近年来,利用图神经网络挖掘依赖语法信息已成为最流行的趋势。尽管它取得了成功,但......
  • 基于 Nginx&Lua 实现自建服务端埋点系统
    前言埋点数据一般取决于服务提供商想从用户身上获取什么信息。通常来讲,主要分为用户的基本属性信息和行为信息。用户的基本属性信息主要包括:年龄、性别、设备等。行为信息即用户的点击行为和浏览行为,在什么时间,哪个用户点击了哪个按钮,浏览了哪个页面,浏览时长等等的数据。基本属......
  • 基于PLC控制的卷绕机如何实现远程监控和程序上下载
    卷绕机适用于各种丝束卷绕以达到节约空间,方便运输的目的,在锂电池、电容器、纺织等行业应用广泛。通过PLC控制的卷绕机可以实现全自动化生产控制,不仅可以降低人力成本,也能大大提高生产效率与精细化程序,降低次品率,需要远程监控手段进行更好的管理。物通博联推出的PLC数据采集系统可以......
  • 基于模板和形态学处理的车牌检测分割和识别matlab仿真,可以识别其中的一个英文字母和
    1.算法描述       车牌识别系统(VehicleLicensePlateRecognition,VLPR)是计算机视频图像识别技术在车辆牌照识别中的一种应用。车牌识别在高速公路车辆管理中得到广泛应用,电子收费(ETC)系统中,也是结合DSRC技术识别车辆身份的主要手段。        车牌识别技术要......
  • m基于简化后的轻量级yolov4深度学习网络农作物检测算法matlab仿真
    1.算法描述        YOLOv4的深层网络包括SPP模块、PANet模块、YOLOHead模块和部分卷积,其主要作用是加强目标特征提取并获取预测结果。SPP模块的输入端和输出端各连接一个三次卷积块,每个三次卷积块包含2个1×1卷积和1个3×3卷积。PANet模块包含特征层堆......