下拉重新整理Demo

2021-06-19 02:44:12 字數 3761 閱讀 1032

引用了網上的demo

。總結下使用 ,方便以後簡單使用。

/**

* 下拉重新整理

*/public class refreshlistview extends listview implements onscrolllistener

public refreshlistview(context context, attributeset attrs)

private void init(context context)

public void onscroll(abslistview arg0, int firstvisiableitem, int arg2,

int arg3)

public void onscrollstatechanged(abslistview arg0, int arg1)

/*** 觸控螢幕的事件

*/public boolean ontouchevent(motionevent event)

break;

case motionevent.action_up:

if (state != refreshing && state != loading)

if (state == pull_to_refresh)

if (state == release_to_refresh)

}isrecored = false;

isback = false;

break;

case motionevent.action_move:

// 獲取手勢位置

int tempy = (int) event.gety();

// log.v(tag, "tempy: " + tempy);

/*** 手指移動過程中tempy資料會不斷變化,當滑動到firstitemindex,即到達頂部, 需要記錄手指所在螢幕的位置:

* starty = tempy ,後面作位置比較使用

* * 如果手指繼續向下推,tempy繼續變化,當tempy-starty>0,即是需要顯示header部分

* * 此時需要更改狀態:state = pull_to_refresh

*/if (!isrecored && firstitemindex == 0)

if (state != refreshing && isrecored && state != loading)

// 一下子推到頂了,沒有顯示header部分時,應該恢復done狀態,這裡機率很小

else if (tempy - starty <= 0) else

}// 還沒有到達顯示鬆開重新整理的時候,done或者是pull_to_refresh狀態

if (state == pull_to_refresh)

// 上推到頂了,沒有顯示header部分時,應該恢復done狀態

else if (tempy - starty <= 0)

}// done狀態下

if (state == done)

}/**

* ********** 更新headview的paddingtop ************

* 根據不同的top值來設定元件的位置

*/if (state == pull_to_refresh)

/*** 繼續更新headview的paddingtop

*/if (state == release_to_refresh)

}break;}}

return super.ontouchevent(event);

}// 當狀態改變時候,呼叫該方法,以更新介面

private void changeheaderviewbystate() else

log.v(tag, "當前狀態,下拉重新整理");

break;

case refreshing:

log.v(tag, "refreshing...");

headview.setpadding(0, 0, 0, 0);

// progressbar.setvisibility(view.visible);

arrowimageview.clearanimation();

arrowimageview.setvisibility(view.gone);

tipstextview.settext("正在重新整理...");

lastupdatedtextview.setvisibility(view.visible);

log.v(tag, "當前狀態,正在重新整理...");

break;

case done:

headview.setpadding(0, -1 * headcontentheight, 0, 0);

// progressbar.setvisibility(view.gone);

arrowimageview.clearanimation();

/*** 第二次下拉的時候,呼叫該方法

*/// arrowimageview.setimageresource(r.drawable.refresh);

tipstextview.settext("下拉重新整理");

lastupdatedtextview.setvisibility(view.visible);

log.v(tag, "當前狀態,done");

break;}}

public void setonrefreshlistener(onrefreshlistener refreshlistener)

public inte***ce onrefreshlistener

public void onrefreshcomplete()

private void onrefresh()

}// 此方法直接照搬自網路上的乙個下拉重新整理的demo,此處是「估計」headview的width以及height

private void measureview(view child)

int childwidthspec = viewgroup.getchildmeasurespec(0, 0 + 0, p.width);

int lpheight = p.height;

int childheightspec;

if (lpheight > 0) else

child.measure(childwidthspec, childheightspec);

}public void setadapter(baseadapter adapter)

}

下拉重新整理是重寫的listview ,所以在引用的時候,要加入該類的路徑:

在使用的時候,新建該類物件 。

listnews = (refreshlistview) view.findviewbyid(r.id.list_news);

// 新建介面卡物件

importantnews impnews = new importantnews(context, position);

listnews.setadapter(impnews);

listnews.setonrefreshlistener(new onrefreshlistener()

});

效果:

下拉重新整理 WEUI下拉重新整理

最近在做手機版使用到了下拉重新整理和滾動載入,記錄一下實現過程 一 引入檔案12 34 二 頁面布局12 3456 78910 1112 1314 1516 1718 19 下拉重新整理 釋放重新整理 正在重新整理 正在載入 三 js部分12 3456 78910 1112 1314 1516 17...

Android 下拉重新整理,非常強大的下拉重新整理功能

android下拉重新整理各式各樣,今天介紹兩種常見的 第一種下拉重新整理就是android自帶api v4包下面的 android support.v4.widget.swiperefreshlayout 只要將要重新整理的控制項放到swiperefreshlayout 裡面 比如 android...

IOS UITableView下拉重新整理

給 uitableview 新增 下拉重新整理 pull refresh 屬性 親愛的,我還是有些不忍心,不過事情的經過是這樣的 cocoa touch 的 官方 sdk 裡,壓根就沒實現這個 pull refresh 的功能。恩,這事真不是賈伯斯手下幹的。然而也不是麻匪幹的。是他幹的,enorme...