PopupWindow+RecyclerView实现上下滑动框功能

PopupWindow+RecyclerView实现上下滑动框功能,第1张

概述本文实例为大家分享了PopupWindow+RecyclerView实现上下滑动功能的具体代码,供大家参考,具体内容如下

本文实例为大家分享了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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

您可能感兴趣的文章:Android实现滑动删除 *** 作(PopupWindow)Android程序开发之ListView 与PopupWindow实现从左向右滑动删除功能 总结

以上是内存溢出为你收集整理的PopupWindow+RecyclerView实现上下滑动框功能全部内容,希望文章能够帮你解决PopupWindow+RecyclerView实现上下滑动框功能所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1142624.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存