[セットトップ]android Listviewバッチロード+自動ロード(ソースコードダウンロード付)
直接コードを入力します.コードにはコメントがあります.
demoソースダウンロード:ソースダウンロード
public class TestForListviewActivity extends Activity implements
OnScrollListener {
private ListView mListview = null;
private View mFooterView;
private PaginationAdapter mAdapter;
private Handler handler=new Handler();
private boolean isLoading;//
private final int MAX_COUNT=35;// MAX_COUNT
private final int EACH_COUNT=10;//
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mFooterView = getLayoutInflater().inflate(R.layout.loadmore, null);
mListview = (ListView) findViewById(R.id.listview);
mListview.addFooterView(mFooterView);//
List<News> news=new ArrayList<News>();
mAdapter = new PaginationAdapter(news);;
mListview.setAdapter(mAdapter);
// setOnScrollListener onscroll 。
mListview.setOnScrollListener(this);
}
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if (firstVisibleItem+visibleItemCount==totalItemCount&&!isLoading) {
//isLoading = true , isLoading =false;
isLoading = true;
// , ,
if (totalItemCount<=MAX_COUNT) {
// 2 , 2s
handler.postDelayed(new Runnable() {
public void run() {
loadMoreData();
}
},2000);
}else{
if (mListview.getFooterViewsCount()!=0) {
mListview.removeFooterView(mFooterView);
}
}
}
}
public void onScrollStateChanged(AbsListView arg0, int arg1) {
Log.i("onScrollStateChanged", arg1+"");
}
private void loadMoreData(){
int count = mAdapter.getCount();
for (int i = 0; i < EACH_COUNT; i++) {
if (count+i<MAX_COUNT) {
News item = new News();
item.setTitle("Title" + (count+i));
item.setContent("This is News Content" + (count+i));
mAdapter.addNewsItem(item);
}else{
mListview.removeFooterView(mFooterView);
}
}
mAdapter.notifyDataSetChanged();
isLoading = false;
}
class PaginationAdapter extends BaseAdapter {
List<News> newsItems;
public PaginationAdapter(List<News> newsitems) {
this.newsItems = newsitems;
}
public int getCount() {
return newsItems==null?0:newsItems.size();
}
public Object getItem(int position) {
return newsItems.get(position);
}
public long getItemId(int position) {
return position;
}
public void addNewsItem(News newsitem) {
newsItems.add(newsitem);
}
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = getLayoutInflater().inflate(R.layout.list_item,
null);
}
//
TextView tvTitle = (TextView) convertView
.findViewById(R.id.newstitle);
tvTitle.setText(newsItems.get(position).getTitle());
//
TextView tvContent = (TextView) convertView
.findViewById(R.id.newscontent);
tvContent.setText(newsItems.get(position).getContent());
return convertView;
}
}
}
demoソースダウンロード:ソースダウンロード