編輯:關於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);// 設置列表底部視圖 Listnews=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源碼下載:源碼下載
前言距離寫上一篇自定義View文章已經大半年過去了,一直想繼續寫,但是無奈技術有限,生怕誤人子弟。這段時間項目剛剛完成,有點時間,跟著大神的腳步,鞏固下自定義View的相
需求:Activity(fragment)跳轉的時候當前界面裂開,上下各自拉出手機屏幕,之後跳轉到相對應的Activity.整體效果圖如下 思路: 1,在當前Acti
一、給自定義按鍵添加廣播修改PhoneWindowManager.java中的interceptKeyBeforeDispatching方法/frameworks/bas
之前跟大家介紹一個Alibaba的框架dexposed框架,此框架能夠動態的從線上完成一些補丁的工作。但是,由於它的性能和兼容性(不支持ART)所以,很多朋