編輯:關於Android編程
以前也實現過,ListView的上拉刷新,不過用的是開源代碼,由於本人比較懶吧,源碼也沒怎麼研究,所以現在寫出來還不是那麼流利。還好本人發現了自己的這些特點,所以寫出來個Demo,基本實現了ListView的上拉說新,當做練習了,可能還不是那麼完美,以後根據開源代碼的研究,會寫出更好的並且簡單易懂的下拉說新Demo來發表。
實現效果圖:
直接上代碼吧:
MainActivity:
package com.listdemo; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.AbsListView; import android.widget.AbsListView.OnScrollListener; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { private ListView listView; private MyAdapter adapter; private Listlist = new ArrayList (); private List listAll = new ArrayList (); private Map map = new HashMap (); private boolean is_divPage;// 是否進行分頁操作 private MyAdapter mAdatper; private TextView tv_msg; private LinearLayout loading; private LinearLayout list_footer; // public static int pageNum = 1;// 設置pageNo的初始化值為1,即默認獲取的是第一頁的數據。 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = (ListView) findViewById(R.id.listView1); /** * 添加ListView的footer */ list_footer = (LinearLayout) getLayoutInflater().inflate( R.layout.list_footer, null); list_footer.setBackgroundColor(Color.parseColor(#ffffff)); tv_msg = (TextView) list_footer.findViewById(R.id.tv_msg);// 更多 loading = (LinearLayout) list_footer.findViewById(R.id.loading);// 讀取中+progressBar tv_msg.setVisibility(View.GONE); loading.setVisibility(View.VISIBLE); listView.addFooterView(list_footer); /** * listView中添加數據 */ initData(); /** * 將每頁數據(list中每次存儲的數據)添加到ListAll(存儲所有的數據)中。 */ listAll.addAll(list); adapter = new MyAdapter(this, listAll); listView.setAdapter(adapter); /** * listview的監聽事件 */ listView.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { /** * 如果等到該分頁(is_divPage = true)的時候,並且滑動停止(這個時候手已經離開了屏幕),自動加載更多。 */ if (is_divPage && scrollState == OnScrollListener.SCROLL_STATE_IDLE) { Toast.makeText(MainActivity.this, 正在獲取更多數據..., Toast.LENGTH_SHORT).show(); Log.d(zhongyao, 調用onScrollStateChanged!!!!); initData(); listAll.addAll(list); adapter.notifyDataSetChanged(); tv_msg.setVisibility(View.INVISIBLE); loading.setVisibility(View.VISIBLE); } else if (!is_divPage && scrollState == OnScrollListener.SCROLL_STATE_IDLE) { tv_msg.setVisibility(View.VISIBLE); loading.setVisibility(View.INVISIBLE); } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { is_divPage = (firstVisibleItem + visibleItemCount == totalItemCount); } }); } private void initData() { list.clear(); for (int i = 0; i < 10; i++) { list.add(zhongyao +i); } } }
MyAdapter:
package com.listdemo; import java.util.ArrayList; import java.util.List; import java.util.Map; import android.content.Context; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import android.widget.Toast; /** * 適配器 * @author Administrator * */ public class MyAdapter extends BaseAdapter { private Context context; private Listlist = new ArrayList (); public MyAdapter(Context contex, List list) { this.context = contex; this.list = list; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (convertView == null) { holder = new ViewHolder(); convertView = LayoutInflater.from(context).inflate( R.layout.list_item, null); holder.tv_name = (TextView) convertView .findViewById(R.id.textView1); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.tv_name.setText(list.get(position)); convertView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(context, 您的選擇是: + position, 1).show(); } }); return convertView; } class ViewHolder { private TextView tv_name, tv_age; } }
activity_main:
list_item;
在Android程序中很多客戶端軟件和浏覽器軟件都喜歡用Tab分頁標簽來搭建界面框架。讀者也許會馬上想到使用TabHost 與 TabActivity的組合,其實最常用的
轉載請注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),謝謝支持! 開篇廢話: 這個項目准備分四部
android退出應用程序會調用android.os.Process.killProcess(android.os.Process.myPid())或是System.ex
NFC簡介 NFC是Near Field Communication縮寫,即近距離無線通訊技術。由飛利浦公司和索尼公司共同開發的NFC是一種非 接觸式識別和