編輯:關於Android編程
直接上代碼,代碼有注釋:
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=new ArrayList();
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 newsItems;
public PaginationAdapter(List 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源碼下載:源碼下載
Android 自定義控件之基礎幾何圖形繪制詳解
前言距離寫上一篇自定義View文章已經大半年過去了,一直想繼續寫,但是無奈技術有限,生怕誤人子弟。這段時間項目剛剛完成,有點時間,跟著大神的腳步,鞏固下自定義View的相
Activit跳轉動畫之界面上某個位置 裂開上下拉伸動畫跳轉
需求:Activity(fragment)跳轉的時候當前界面裂開,上下各自拉出手機屏幕,之後跳轉到相對應的Activity.整體效果圖如下 思路: 1,在當前Acti
Android給自定義按鍵添加廣播和通過廣播給當前焦點輸入框賦值
一、給自定義按鍵添加廣播修改PhoneWindowManager.java中的interceptKeyBeforeDispatching方法/frameworks/bas
Android不發版也能在線修Bug?——AndFix 框架
之前跟大家介紹一個Alibaba的框架dexposed框架,此框架能夠動態的從線上完成一些補丁的工作。但是,由於它的性能和兼容性(不支持ART)所以,很多朋