android之下拉刷新(参考Demo即可写出自己的)

1. 重写的ListView的布局文件

<?xml version="1.0" encoding="utf-8"?>

<!-- ListView的头部 -->

<LinearLayout
  
xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width
="fill_parent"
  android:layout_height
="wrap_content"
 
>
  
  <!-- 内容 -->
  <RelativeLayout
  
android:layout_width="fill_parent"
  android:layout_height
="wrap_content"
  android:id
="@+id/head_contentLayout"
  android:paddingLeft
="30dp"
  
>
  
  <!-- 箭头图像、进度条 -->
  <FrameLayout
  
android:layout_width="wrap_content"
  android:layout_height
="wrap_content"
  android:layout_alignParentLeft
="true"
  android:layout_centerVertical
="true"
  
>
  
  <!-- 箭头 -->
  <ImageView
  
android:layout_width="wrap_content"
  android:layout_height
="wrap_content"
  android:layout_gravity
="center"
  android:src
="@drawable/arrow"
  android:id
="@+id/head_arrowImageView"
  
/>
  
  <!-- 进度条 -->
  <ProgressBar
  
android:layout_width="wrap_content"
  android:layout_height
="wrap_content"
  style
="?android:attr/progressBarStyleSmall"
  android:layout_gravity
="center"
  android:id
="@+id/head_progressBar"
  
  android:visibility
="gone"
  
/>
  
  </FrameLayout>
  
  <!-- 提示、最近更新 -->
  <LinearLayout
  
android:layout_width="wrap_content"
  android:layout_height
="wrap_content"
  android:layout_centerHorizontal
="true"
  android:orientation
="vertical"
  android:gravity
="center_horizontal"
  
>
  
  <!-- 提示 -->
  <TextView
  
android:layout_width="wrap_content"
  android:layout_height
="wrap_content"
  android:text
="下拉刷新"
  android:textColor
="@color/white"
  android:textSize
="20sp"
  android:id
="@+id/head_tipsTextView"
  
/>
  
  <!-- 最近更新 -->
  <TextView
  
android:layout_width="wrap_content"
  android:layout_height
="wrap_content"
  android:id
="@+id/head_lastUpdatedTextView"
  android:text
="上次更新"
  android:textColor
="@color/gold"
  android:textSize
="10sp"
  
/>
  
  </LinearLayout>
  
  
  </RelativeLayout>
  
  </LinearLayout> 


2.  重写的ListView的类(由于代码量较多,以下载的方式好了:/Files/lee0oo0/MyListView.rar)

 

  3. 使用的Demo类及其布局文件

package com.laohuai.appdemo.customui;

import java.util.ArrayList;
import java.util.List;

import com.laohuai.appdemo.customui.ui.MyListView;
import com.laohuai.appdemo.customui.ui.MyListView.OnRefreshListener;

import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class MainActivity extends Activity {

    private List<String> data;
    private BaseAdapter adapter;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        data = new ArrayList<String>();
        data.add("a");
        data.add("b");
        data.add("c");

        final MyListView listView = (MyListView) findViewById(R.id.listView);
        adapter = new BaseAdapter() {
            public View getView(int position, View convertView, ViewGroup parent) {
                TextView tv = new TextView(getApplicationContext());
                tv.setText(data.get(position));
                return tv;
            }

            public long getItemId(int position) {
                return 0;
            }

            public Object getItem(int position) {
                return null;
            }

            public int getCount() {
                return data.size();
            }
        };
        listView.setAdapter(adapter);

        listView.setonRefreshListener(new OnRefreshListener() {
            public void onRefresh() {
                new AsyncTask<Void, Void, Void>() {
                    protected Void doInBackground(Void... params) {
                        try {
                            Thread.sleep(1000);
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                        data.add("刷新后添加的内容");
                        return null;
                    }

                    @Override
                    protected void onPostExecute(Void result) {
                        adapter.notifyDataSetChanged();
                        listView.onRefreshComplete();
                    }

                }.execute();
            }
        });
    }

}  


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width
="fill_parent"
    android:layout_height
="fill_parent"
    android:orientation
="vertical" >
    
    <com.laohuai.appdemo.customui.ui.MyListView
    
android:layout_width="fill_parent"
    android:layout_height
="fill_parent"
    android:id
="@+id/listView"
    
/>
    
</LinearLayout> 


posted on 2012-07-29 15:13  lee0oo0  阅读(680)  评论(0)    收藏  举报