package
com.example.listview;
import
java.util.ArrayList;
import
java.util.List;
import
java.util.Vector;
import
android.app.Activity;
import
android.os.Bundle;
import
android.os.Handler;
import
android.os.Message;
import
android.view.View;
import
android.view.ViewGroup;
import
android.widget.AbsListView;
import
android.widget.AbsListView.OnScrollListener;
import
android.widget.BaseAdapter;
import
android.widget.ListView;
import
android.widget.TextView;
public
class
MainActivity6
extends
Activity
implements
OnScrollListener{
private
ListView listView;
private
List<News> news=
new
Vector<News>();
private
MyAdapter myDapter;
private
Handler handler=
new
Handler(){
@Override
public
void
handleMessage(Message msg) {
switch
(msg.what) {
case
1
:
myDapter.notifyDataSetChanged();
break
;
default
:
break
;
}
}
};
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.main6);
listView=(ListView) findViewById(R.id.listView6_1_1);
View footView=getLayoutInflater().inflate(R.layout.load,
null
);
listView.addFooterView(footView);
listView.setOnScrollListener(
this
);
new
LoadDateThread().start();
myDapter=
new
MyAdapter();
listView.setAdapter(myDapter);
}
/**
* 初始化数据
* */
int
index;
void
initDate(){
for
(
int
i=
0
;i<
10
;i++){
News newss=
new
News();
newss.title=
"title-"
+index;
newss.content=
"content-"
+index;
index++;
news.add(newss);
}
}
/**
* 自定义适配器
* */
class
MyAdapter
extends
BaseAdapter{
@Override
public
int
getCount() {
return
news.size();
}
@Override
public
Object getItem(
int
position) {
return
news.get(position);
}
@Override
public
long
getItemId(
int
position) {
return
position;
}
@Override
public
View getView(
int
position, View convertView, ViewGroup parent) {
Viewholer viewholer;
if
(convertView==
null
){
convertView=getLayoutInflater().inflate(R.layout.main6_item,
null
);
viewholer=
new
Viewholer();
viewholer.textView=(TextView) convertView.findViewById(R.id.textView_title_1_1);
viewholer.textContent=(TextView) convertView.findViewById(R.id.textView_content_2_2);
convertView.setTag(viewholer);
}
else
{
viewholer=(Viewholer) convertView.getTag();
}
News newss=news.get(position);
viewholer.textView.setText(newss.title);
viewholer.textContent.setText(newss.content);
return
convertView;
}
}
static
class
Viewholer{
TextView textView;
TextView textContent;
}
int
visiableLastIndex=
0
;
@Override
public
void
onScrollStateChanged(AbsListView view,
int
scrollState) {
if
(myDapter.getCount()==visiableLastIndex&&scrollState==OnScrollListener.SCROLL_STATE_IDLE){
new
LoadDateThread().start();
}
}
@Override
public
void
onScroll(AbsListView view,
int
firstVisibleItem,
int
visibleItemCount,
int
totalItemCount) {
System.out.println(
"view:"
+view);
System.out.println(
"firstVisibleItem:"
+firstVisibleItem);
System.out.println(
"visibleItemCount:"
+visibleItemCount);
System.out.println(
"totalItemCount"
+totalItemCount);
visiableLastIndex=firstVisibleItem+visibleItemCount-
1
;
}
class
LoadDateThread
extends
Thread{
@Override
public
void
run() {
super
.run();
initDate();
try
{
Thread.sleep(
2000
);
handler.sendEmptyMessage(
1
);
}
catch
(InterruptedException e) {
e.printStackTrace();
}
}
}
}