public
?
class
?
LoadActivity
?
extends
?
Activity {
??????
private
?
ListView
?
lv
?
=
?
null
;
??????ArrayList<bean>
?
beans
?
=
?
new
?
ArrayList<bean>();
??????MyAdapter
?
adapter
?
=
?
null
;
??????
boolean
?
isRefresh
?
=
?
true
;
??????
boolean
?
isFirstRun
?
=
?
true
;
??????
private
?
bean
?
bean
=
null
;
??????
@
Override
??????
public
?
void
?
onCreate(Bundle savedInstanceState) {
????????????
super
.onCreate(savedInstanceState);
????????????setContentView(R.layout.
refresh
);
????????????
lv
?
= (ListView) findViewById(R.id.
listview
);
????????????
lv
.setOnScrollListener(
new
?
OnScrollListener() {
??????????????????
public
?
void
?
onScroll(AbsListView view,
?
int
?
firstVisibleItem,
??????????????????????????????
int
?
visibleItemCount,
?
int
?
totalItemCount) {
????????????????????????Log.
i
(
"v"
,
?
""
?
+ visibleItemCount);
????????????????????????Log.
i
(
"f"
,
?
""
?
+ firstVisibleItem);
????????????????????????Log.
i
(
"t"
,
?
""
?
+ totalItemCount);
? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? //第一次進入時候,如果當前顯示頁面放不下第一次的所有數據,會分頁顯示
? ? ? ? ? ? ? ? ? ? ? ? //就算滾輪到最低端,也不會加載的新的數據,只有當第一次數據顯示完后才會刷新出現loading
? ? ? ? ? ? ? ? ? ? ? ? //如果沒有下面的判斷,在你進入這個listview就會直接加載一次新數據,在這個例子里,比如你第一次加載的事40條數據,會變成45條
????????????????????????
if
?
(
isFirstRun
) {
??????????????????????????????
isFirstRun
?
=
?
false
;
??????????????????????????????
return
;
????????????????????????}
? ? ? ? ? ? ? ? ? ? ? ??
????????????????????????
if
?
((firstVisibleItem + visibleItemCount) == totalItemCount
????????????????????????????????????&&
?
isRefresh
) {
??????????????????????????????
isRefresh
?
=
?
false
;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//loading條顯示出來
??????????????????????????????findViewById(R.id.
loadtext
).setVisibility(View.
VISIBLE
);
??????????????????????????????
new
?
LoadThread().start();
????????????????????????}
??????????????????}
??????????????????
public
?
void
?
onScrollStateChanged(AbsListView view,
?
int
?
scrollState) {
????????????});
????????????
adapter
?
=
?
new
?
MyAdapter(
this
.getBaseContext(), getFirstBean());
????????????
lv
.setAdapter(
adapter
);
??????}
? ? ?//第一次加載的數據
??????
private
?
ArrayList<bean> getFirstBean(){
????????????
bean
?
=
new
?
bean();
????????????
for
?
(
int
?
i = 0; i < 20; i++) {
??????????????????
bean
?
=
?
new
?
bean();
??????????????????
bean
.setName(
"Json?? "
?
+ i +
?
"? 號"
);
??????????????????
beans
.add(
bean
);
????????????}
????????????
return
?
beans
;
??????}?????
? ? ? //需要加載的新數據
??????
private
?
void
?
refreshListView() {
????????????
if
?
(
beans
?
==
?
null
?
||
?
adapter
?
==
?
null
) {
??????????????????
return
;
????????????}
????????????bean bean =
?
null
;
????????????
for
?
(
int
?
i = 0; i < 5; i++) {
??????????????????bean =
?
new
?
bean();
??????????????????bean.setName(
"新數據:? "
?
+ i);
??????????????????
beans
.add(bean);
????????????}
??????}
??????Handler
?
_handler
?
=
?
new
?
Handler() {
????????????
@
Override
????????????
public
?
void
?
handleMessage(Message msg) {
??????????????????
switch
?
(msg.
what
) {
??????????????????
case
?
1:
????????????????????????
adapter
.notifyDataSetChanged();
? ? ? ? ? ? ? ? ? ? ? ? //當數據已經改變后loading條不顯示出來
????????????????????????findViewById(R.id.
loadtext
).setVisibility(View.
INVISIBLE
);
????????????????????????
isRefresh
?
=
?
true
;
????????????????????????
break
;
??????????????????
case
?
2:
??????????????????}
????????????}
??????};
? ? ?