Android ListView下拉重新整理,最基本代碼

來源:互聯網
上載者:User

網上找到些例子,功能都實現的很好,各種重新整理,功能多,也就意味著代碼多,想定製自己的下拉重新整理,無從下手。

自己寫了個用於下拉重新整理的最簡單的例子,簡單到只有下拉的介面變化,什麼時候重新整理,什麼時候該處理什麼,請自己動手。

此代碼就像寫程式的“Hello Word”,帶你入門,弄懂基本原理,高深的部分,網上已經有人做的很好了,推薦個各種重新整理的源碼:android-pulltorefresh-master。

註:以下代碼不需要layout檔案,由代碼布局,由代碼產生ListView所需資料,盡量簡化,希望能幫到讀者。

package com.kevinshq.pulltorefresh;import android.app.Activity;import android.graphics.Color;import android.graphics.Typeface;import android.os.Bundle;import android.view.Gravity;import android.view.MotionEvent;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.LinearLayout;import android.widget.ListAdapter;import android.widget.ListView;import android.widget.TextView;public class PullToRefreshActivity extends Activity {public static final String TAG = "PullToRefreshActivity";private final static int RATIO = 2;private boolean isRecored;private int firstItemIndex = 0;private float startY = 0;private TextView headTextView = null;private ListView listView = null;private View.OnTouchListener onTouchListener = new View.OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {// TODO Auto-generated method stubfloat tempY = event.getY();firstItemIndex = listView.getFirstVisiblePosition();switch (event.getAction()) {case MotionEvent.ACTION_DOWN:case MotionEvent.ACTION_MOVE:if (!isRecored && (firstItemIndex == 0)) {isRecored = true;startY = tempY;}break;case MotionEvent.ACTION_UP:case MotionEvent.ACTION_CANCEL:isRecored = false;break;default:break;}switch (event.getAction()) {case MotionEvent.ACTION_DOWN:break;case MotionEvent.ACTION_UP:case MotionEvent.ACTION_CANCEL:if (tempY > startY) {listView.setPadding(0, -200, 0, 0);}break;case MotionEvent.ACTION_MOVE:if (isRecored && tempY > startY) {listView.setPadding(0, (int) ((tempY-startY)/RATIO-200), 0, 0);}break;default:break;}return false;}};private ListAdapter adapter = new BaseAdapter() {@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubTextView tv = (TextView) convertView;if (tv == null) {tv = new TextView(getApplicationContext());}tv.setGravity(Gravity.CENTER);tv.setMinHeight(50);tv.setText(String.valueOf(position));tv.setBackgroundColor(Color.GRAY);return tv;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn 0;}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn position;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn 50;}};@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);ViewGroup.LayoutParams lp_ViewGroup = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);LinearLayout linearLayout = new LinearLayout(this);linearLayout.setOrientation(LinearLayout.VERTICAL);setContentView(linearLayout, lp_ViewGroup);headTextView = new TextView(this);headTextView.setGravity(Gravity.CENTER);headTextView.setMinHeight(200);headTextView.setText("Head");headTextView.setTypeface(Typeface.DEFAULT_BOLD);headTextView.setTextSize(50);headTextView.setBackgroundColor(Color.GREEN);headTextView.invalidate();LinearLayout.LayoutParams lp_LinearLayout = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT);listView = new ListView(this);listView.addHeaderView(headTextView, null, false);listView.setOnTouchListener(onTouchListener);listView.setAdapter(adapter);listView.setPadding(0, -200, 0, 0);linearLayout.addView(listView, lp_LinearLayout);}}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.