当前位置: 移动技术网 > IT编程>移动开发>Android > Android:下拉刷新+加载更多+滑动删除实例讲解

Android:下拉刷新+加载更多+滑动删除实例讲解

2019年07月24日  | 移动技术网IT编程  | 我要评论

603027,河北唐山地图,放弃后的心疼英文版

         小伙伴们在逛淘宝或者是各种app上,都可以看到这样的功能,下拉刷新和加载更多以及滑动删除,刷新,指刷洗之后使之变新,比喻突破旧的而创造出新的,比如在手机上浏览新闻的时候,使用下拉刷新的功能,我们可以第一时间掌握最新消息,加载更多是什么nie,简单来说就是在网页上逛淘宝的时候,我们可以点击下一页来满足我们更多的需求,但是在手机端就不一样了,没有上下页,怎么办nie,方法总比困难多,细心的小伙伴可能会发现,在手机端中,有加载更多来满足我们的要求,其实加载更多也是分页的一种体现。小伙伴在使用手机版qq的时候,消息界面会有很多的信息,如果你也像小编一样有强迫症,想把看完的消息进行删除,怎么办nie,qq实现了向右滑动删除的功能,最近在小编的项目中,就遇到这样的功能下拉刷新和加载更多以及滑动删除,经过几天的捣鼓,当冬日的第二缕阳光照到小编身上的时候,小编终于把她捣鼓出来了,今天这篇博客,小编主要和小伙伴们分享下拉刷新和加载更多一级滑动删除,希望可以帮助到有需要的小伙伴,还请小伙伴们多多指教。

       首先我们需要来编写xml里面的内容,我们命名为activity_item,具体代码如下所示:

xml/html代码

<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" 
  android:id="@+id/ll_parent" 
  android:layout_width="match_parent" 
  android:layout_height="match_parent" 
  android:background="@android:color/darker_gray" 
  android:orientation="vertical" > 
 
  <textview 
    android:id="@+id/tv_text" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center" 
    android:textsize="25sp" /> 
 
</linearlayout>

       接着,我们来编写list_item里面有关xml的代码,具体代码如下所示:

xml/html代码

<relativelayout xmlns:android="http://schemas.android.com/apk/res/android" 
  xmlns:tools="http://schemas.android.com/tools" 
  android:id="@+id/ll_parent" 
  android:layout_width="match_parent" 
  android:layout_height="match_parent" 
  android:gravity="center" 
  android:background="@android:color/darker_gray" 
  tools:context=".mainactivity" > 
 
  <textview 
    android:id="@+id/list_item_textview" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centervertical="true" 
    android:textcolor="#000" 
    android:textsize="16sp" /> 
 
  <framelayout 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_centervertical="true" 
    android:layout_alignparentright="true" 
    android:padding="15dp" > 
 
    <textview 
      android:id="@+id/tv_functions" 
      android:layout_width="90dp" 
      android:layout_height="50dp" 
      android:layout_gravity="center" 
      android:background="@drawable/btn_del_bg" 
      android:gravity="center" 
      android:textcolor="@android:color/white" 
      android:text="删除" />  
 
    <textview 
      android:id="@+id/tv_coating" 
      android:layout_width="90dp" 
      android:layout_height="50dp" 
      android:background="@android:color/darker_gray" 
      android:layout_gravity="center" 
      android:visibility="gone" /> 
  </framelayout> 
 
</relativelayout> 

       第三步,我们来编写main里面的xml文件,具体代码如下所示:

xml/html代码

<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" 
  android:layout_width="fill_parent" 
  android:layout_height="fill_parent" 
  android:background="#f0f0f0" 
  android:orientation="vertical" > 
 
  <textview 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello" /> 
 
  <me.maxwin.view.xlistview 
    android:id="@+id/xlistview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:cachecolorhint="#00000000" > 
  </me.maxwin.view.xlistview> 
 
</linearlayout> 

       第四步,我们来编写xlistview_footer里面的xml文件,具体代码如下所示:

xml/html代码

<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" 
  android:layout_width="fill_parent" 
  android:layout_height="wrap_content" > 
 
  <relativelayout 
    android:id="@+id/xlistview_footer_content" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:padding="10dp" > 
 
    <progressbar 
      android:id="@+id/xlistview_footer_progressbar" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerinparent="true" 
      android:visibility="invisible" /> 
 
    <textview 
      android:id="@+id/xlistview_footer_hint_textview" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerinparent="true" 
      android:text="@string/xlistview_footer_hint_normal" /> 
  </relativelayout> 
 
</linearlayout>

       第五步,我们来编写xlistview_header里面的xml文件,具体代码如下所示:

xml/html代码

<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" 
  android:layout_width="fill_parent" 
  android:layout_height="wrap_content" 
  android:gravity="bottom" > 
 
  <relativelayout 
    android:id="@+id/xlistview_header_content" 
    android:layout_width="fill_parent" 
    android:layout_height="60dp" > 
 
    <linearlayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerinparent="true" 
      android:gravity="center" 
      android:orientation="vertical" android:id="@+id/xlistview_header_text"> 
 
      <textview 
        android:id="@+id/xlistview_header_hint_textview" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="@string/xlistview_header_hint_normal" /> 
 
      <linearlayout 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_margintop="3dp" > 
 
        <textview 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:text="@string/xlistview_header_last_time" 
          android:textsize="12sp" /> 
 
        <textview 
          android:id="@+id/xlistview_header_time" 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:textsize="12sp" /> 
      </linearlayout> 
    </linearlayout> 
 
    <imageview 
      android:id="@+id/xlistview_header_arrow" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignleft="@id/xlistview_header_text" 
      android:layout_centervertical="true" 
      android:layout_marginleft="-35dp" 
      android:src="@drawable/xlistview_arrow" /> 
 
    <progressbar 
      android:id="@+id/xlistview_header_progressbar" 
      android:layout_width="30dp" 
      android:layout_height="30dp" 
      android:layout_alignleft="@id/xlistview_header_text" 
      android:layout_centervertical="true" 
      android:layout_marginleft="-40dp" 
      android:visibility="invisible" /> 
  </relativelayout> 
 
</linearlayout> 

       至此,关于我们的布局xml文件的代码都已经写完了,接着,我们开始编写java类里面的代码,首先,我们来编写itemactivity里面的代码,具体代码如下所示:

java代码

import android.app.activity; 
import android.os.bundle; 
import android.view.motionevent; 
import android.view.view; 
import android.view.view.ontouchlistener; 
import android.widget.textview; 
 
public class itemactivity extends activity implements ontouchlistener { 
 
  private float x, upx; 
 
  protected void oncreate(bundle savedinstancestate) { 
    super.oncreate(savedinstancestate); 
    setcontentview(r.layout.activity_item); 
    init(); 
  } 
 
  private void init() { 
    findviewbyid(r.id.ll_parent).setontouchlistener(this); 
    ((textview) findviewbyid(r.id.tv_text)).settext(getintent().getstringextra("item")); 
  } 
 
  public boolean ontouch(view v, motionevent event) { 
    if (event.getaction() == motionevent.action_down) { 
      x = event.getx(); 
    } 
    if (event.getaction() == motionevent.action_up) { 
      upx = event.getx(); 
      if (math.abs(x - upx) > 20) { 
        this.finish(); 
        overridependingtransition(0, r.anim.slide_out_to_right); 
      } 
    } 
    return true; 
  } 
 
} 

      接着,我们来编写适配器adapter里面的代码,具体代码如下所示:

java代码

import java.util.arraylist; 
 
import android.content.context; 
import android.view.layoutinflater; 
import android.view.view; 
import android.view.viewgroup; 
import android.widget.baseadapter; 
import android.widget.textview; 
 
public class itemadapter extends baseadapter { 
 
  private layoutinflater inflater; 
  private arraylist<string> datas; 
 
  public itemadapter(context context) { 
    inflater = layoutinflater.from(context); 
  } 
 
  public void setdata(arraylist<string> datas) { 
    this.datas = datas; 
  } 
 
  public int getcount() { 
    return datas.size(); 
  } 
 
  public object getitem(int position) { 
    return datas.get(position); 
  } 
 
  public long getitemid(int position) { 
    return position; 
  } 
 
  public view getview(final int position, view convertview, viewgroup parent) { 
    viewholder holder = null; 
    if (convertview == null) { 
      holder = new viewholder(); 
      convertview = inflater.inflate(r.layout.list_item, null); 
      holder.coating = (textview) convertview.findviewbyid(r.id.tv_coating); 
      holder.functions = (textview) convertview.findviewbyid(r.id.tv_functions); 
      holder.list_item_textview=(textview) convertview.findviewbyid(r.id.list_item_textview); 
      convertview.settag(holder); 
    } else { 
      holder = (viewholder) convertview.gettag(); 
    } 
     
    holder.list_item_textview.settext(datas.get(position)); 
 
    holder.coating.setvisibility(view.visible); 
     
    holder.functions.setclickable(false); 
     
    return convertview; 
  } 
 
  public final class viewholder { 
    public textview coating; 
    public textview functions; 
    public textview list_item_textview; 
  } 
} 

      最后我们来编写xlistviewactivity里面的代码,具体代码如下所示:

java代码

import java.util.arraylist; 
 
import me.maxwin.view.xlistview; 
import me.maxwin.view.xlistview.ixlistviewlistener; 
import me.maxwin.view.xlistview.removelistener; 
import android.app.activity; 
import android.content.context; 
import android.content.intent; 
import android.os.bundle; 
import android.os.handler; 
import android.view.view; 
import android.widget.adapterview; 
import android.widget.adapterview.onitemclicklistener; 
 
public class xlistviewactivity extends activity implements ixlistviewlistener ,removelistener,onitemclicklistener{ 
  private xlistview mlistview; 
// private arrayadapter<string> madapter; 
  private itemadapter adapter; 
// private context context; 
  private arraylist<string> items = new arraylist<string>(); 
  private handler mhandler; 
  private int start = 0; 
  private static int refreshcnt = 0; 
  /** called when the activity is first created. */ 
  @override 
  public void oncreate(bundle savedinstancestate) { 
    super.oncreate(savedinstancestate); 
    setcontentview(r.layout.main); 
    geneitems(); 
    init(); 
     
    mhandler = new handler(); 
  } 
   
  private void init() { 
    // todo auto-generated method stub 
    mlistview = (xlistview) findviewbyid(r.id.xlistview); 
    mlistview.setpullloadenable(true); 
    mlistview.setremovelistener(this); 
    mlistview.setonitemclicklistener(this); 
//   mlistview.setpullloadenable(false); 
//   mlistview.setpullrefreshenable(false); 
    mlistview.setxlistviewlistener(this); 
    adapter=new itemadapter(this); 
    adapter.setdata(items); 
    mlistview.setadapter(adapter); 
 
  } 
   
   
  private void geneitems() { 
    for (int i = 0; i != 20; ++i) { 
      items.add("refresh cnt " + (++start)); 
    } 
  } 
 
  private void onload() { 
    mlistview.stoprefresh(); 
    mlistview.stoploadmore(); 
    mlistview.setrefreshtime("刚刚"); 
  } 
   
  @override 
  public void onrefresh() { 
    mhandler.postdelayed(new runnable() { 
      @override 
      public void run() { 
        start = ++refreshcnt; 
        items.clear(); 
        geneitems(); 
        // madapter.notifydatasetchanged(); 
        adapter=new itemadapter(xlistviewactivity.this); 
        adapter.setdata(items); 
        mlistview.setadapter(adapter); 
        onload(); 
      } 
    }, 2000); 
  } 
 
  @override 
  public void onloadmore() { 
    mhandler.postdelayed(new runnable() { 
      @override 
      public void run() { 
        geneitems(); 
        adapter.notifydatasetchanged(); 
        onload(); 
      } 
    }, 2000); 
  } 
   
  @override 
  public void removeitem(int position) { 
    // todo auto-generated method stub 
    mlistview.isslide = false; 
    mlistview.itemview.findviewbyid(r.id.tv_coating).setvisibility(view.visible); 
    items.remove(position); 
    adapter.notifydatasetchanged(); 
     
  } 
 
 
  @override 
  public void onitemclick(adapterview<?> parent, view view, int position, 
      long id) { 
    // todo auto-generated method stub 
    intent intent = new intent(getapplicationcontext(), itemactivity.class); 
    intent.putextra("item", items.get(position)); 
    startactivity(intent); 
    overridependingtransition(r.anim.slide_in_from_right, r.anim.remain_original_location); 
     
  } 
 
} 

      至此,以上就是android 实现 下拉刷新和加载以及滑动删除的知识整理,谢谢大家对本站的支持!          

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网