
本文实例为大家分享了PopupWindow+RecyclerVIEw实现上下滑动框功能的具体代码,供大家参考,具体内容如下
1.新建一个适配器继承自RecyclerVIEw.Adapter
package aud.hik.com.audiorecordtool; import androID.support.v7.Widget.RecyclerVIEw;import androID.vIEw.LayoutInflater;import androID.vIEw.VIEw;import androID.vIEw.VIEwGroup;import androID.Widget.TextVIEw; import java.util.List; public class filelistadapter extends RecyclerVIEw.Adapter<filelistadapter.VIEwHolder> { private final String TAG = "filelistadapter"; private List<String> mfileList = null; private OnItemClickListener mOnItemClickListener = null; static class VIEwHolder extends RecyclerVIEw.VIEwHolder{ TextVIEw filenameVIEw; public VIEwHolder(VIEw vIEw) { super(vIEw); filenameVIEw = (TextVIEw) vIEw.findVIEwByID(R.ID.file_name); } } public filelistadapter(List<String> fileList) { this.mfileList = fileList; } //加载item 的布局 创建VIEwHolder实例 @OverrIDe public VIEwHolder onCreateVIEwHolder(VIEwGroup parent,int vIEwType) { VIEw vIEw = LayoutInflater.from(parent.getContext()).inflate(R.layout.item,parent,false);//加载vIEw布局文件 VIEwHolder holder = new VIEwHolder(vIEw); return holder; } //对RecyclerVIEw子项数据进行赋值 @OverrIDe public voID onBindVIEwHolder(VIEwHolder holder,int position) { if(null == holder) { MyLog.LOGE(TAG,"Holder is null"); return; } final String filename= mfileList.get(position); MyLog.LOGI(TAG,"filename = "+filename +"filenamevIEw = "+holder.filenameVIEw); holder.filenameVIEw.setText(filename); final int tempposition = position; if(null != mOnItemClickListener) { holder.itemVIEw.setonClickListener( new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw v) { mOnItemClickListener.onClickItem(tempposition,filename); } }); // holder.itemVIEw.setonLongClickListener( new VIEw.OnLongClickListener() {// @OverrIDe// public boolean onLongClick(VIEw v) {// mOnItemClickListener.onLongClick(tempposition,filename);// return false;// }// }); } } //返回子项个数 @OverrIDe public int getItemCount() { return mfileList.size(); } public interface OnItemClickListener{ voID onClickItem( int position,String filename);// voID onLongClickItem( int position,String filename); } public voID setonItemClickListener(OnItemClickListener onItemClickListener ){ this.mOnItemClickListener = onItemClickListener; }}2.mainactivity中需要调用的方法
private voID showPopupWindow(){ VIEw vIEw = LayoutInflater.from(this).inflate(R.layout.pop_window,null); //初始化List数据 mVecfile = getfilename(TEXT_READ); //初始化RecyclerVIEw RecyclerVIEw recyslervIEw = (RecyclerVIEw) vIEw.findVIEwByID(R.ID.recycler_vIEw); //创建linearlayoutmanager 对象 这里使用 linearlayoutmanager 是线性布局的意思 linearlayoutmanager layoutmanager = new linearlayoutmanager(this); //设置RecyclerVIEw 布局 recyslervIEw.setLayoutManager(layoutmanager); //设置Adapter filelistadapter adapter = new filelistadapter(mVecfile); adapter.setonItemClickListener(new filelistadapter.OnItemClickListener() {// @OverrIDe// public voID onLongClickItem(int position,String filename) {// Toast.makeText(AudioRecordActivity.this,"onLongClick事件 您点击了第:"+position+"个Item",Toast.LENGTH_SHORT).show();// } @OverrIDe public voID onClickItem(int position,String filename) { mTextname = filename; mEdiTxtname.setText(mTextname); String mTextPath = TEXT_READ+"/"+mTextname; // file file = new file(path); Toast.makeText(AudioRecordActivity.this,mTextPath,Toast.LENGTH_SHORT).show(); mList = new ArrayList<>(); try { fileReader fr = new fileReader(mTextPath); BufferedReader br = new BufferedReader(fr);//以行的方式读取文件 String str = null; while(null != (str = br.readline())) { mList.add(str); MyLog.LOGI(TAG,str); } fr.close(); br.close(); } catch(fileNotFoundException e) { e.printstacktrace(); } catch (IOException e){ e.printstacktrace(); } MyLog.LOGI(TAG,"List size="+mList.size()); if(0 != mList.size()) { mTextVIEw.setText(mList.get(mListIndex)); } else { return; } } }); recyslervIEw.setAdapter(adapter); //解决Android7.0以上手机的适配问题 PopupWindow popupWindow = new PopupWindow(vIEw,linearLayout.LayoutParams.MATCH_PARENT,linearLayout.LayoutParams.WRAP_CONTENT){ @OverrIDe public voID showAsDropDown(VIEw anchor) { if(Build.VERSION.SDK_INT >= 24){ Rect visibleFrame = new Rect(); anchor.getGlobalVisibleRect(visibleFrame); int height = anchor.getResources().getdisplayMetrics().heightPixels - visibleFrame.bottom; setHeight(height); } super.showAsDropDown(anchor); } @OverrIDe public voID showAsDropDown(VIEw anchor,int xoff,int yoff) { if(Build.VERSION.SDK_INT >= 24) { Rect rect = new Rect(); anchor.getGlobalVisibleRect(rect); int h = anchor.getResources().getdisplayMetrics().heightPixels - rect.bottom; setHeight(h); } super.showAsDropDown(anchor,xoff,yoff); } }; colorDrawable DW = new colorDrawable(0x10000000); popupWindow.setBackgroundDrawable(DW); popupWindow.setoutsIDetouchable(true); popupWindow.setFocusable(true); popupWindow.showAsDropDown(mEdiTxtname); }3.item.xml
<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" androID:orIEntation="horizontal" androID:background="@color/colorPrimaryDark" androID:layout_margin="1dp"> <TextVIEw androID:ID="@+ID/file_name" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" androID:textcolor="@color/colorWhite" androID:textSize = "30sp"/> </linearLayout>
4.pop_window.xml
<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="match_parent" androID:layout_height="match_parent"> <androID.support.v7.Widget.RecyclerVIEw androID:ID="@+ID/recycler_vIEw" androID:layout_wIDth="match_parent" androID:layout_height="match_parent"> </androID.support.v7.Widget.RecyclerVIEw></linearLayout>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
以上是内存溢出为你收集整理的PopupWindow+RecyclerView实现上下滑动框功能全部内容,希望文章能够帮你解决PopupWindow+RecyclerView实现上下滑动框功能所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)