Android ListView ExpandableListView GridView WebView ScrollView HorizontalScrollView等 上拉載入,下拉重新整理!,listview嵌套gridview

來源:互聯網
上載者:User

Android ListView ExpandableListView GridView WebView ScrollView HorizontalScrollView等 上拉載入,下拉重新整理!,listview嵌套gridview

第一次寫部落格有點緊張,如果有錯的話,歡迎您糾正!

大家都知道目前App都有一個常見的功能就是上拉載入、下拉重新整理,其實就是分頁。
但是今天要用第三方JAR“Android-PullToRefresh-master”,
支援一下控制項:
ListView
ExpandableListView
GridView
WebView
ScrollView
HorizontalScrollView
ViewPager
來、走起!(或者直接下載Demo和jar包就可以了)
jar包和Demo:可以去下載免積分

第一步: 建立項目:“DemoFlush”,匯入jar包(Android-PullToRefresh-master.rar包解壓後 得到一個檔案夾,然後以匯入項目的方式,匯入到Eclipse中)。
注意:匯入之後有可能報錯哦,解決方案:在剛匯入到項目(Android-PullToRefresh-master)中右鍵“Properties”選擇“Android”然後看到“Project Build Taget”勾選你的SDK(看懂沒! 相信你可以搞定的!)

第二步: 選中項目(Demo上面寫了就是剛建立的)右鍵“Properties” 選擇“Android”—>Libray–>add
好在這一步Demo項目 已經完成了一半了!

第三步: Demo那個項目中 我是在activity_main.xml 寫了一下代碼(其實就是自訂控制項,但是這個控制項是來自剛才的jar包的 所以用完整類名),記得命名空間!

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="#FFFFFF"    android:orientation="vertical" >    <!-- xmlns:ptr = "http://schemas.android.com/apk/res-auto"  為我們要使用PullToRefresh 裡面一些屬性需要引的命名空間 -->    <com.handmark.pulltorefresh.library.PullToRefreshListView        xmlns:ptr="http://schemas.android.com/apk/res-auto"        android:id="@+id/pull_refresh_list"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:dividerHeight="4dp"        android:fadingEdge="none"        android:fastScrollEnabled="false"        android:footerDividersEnabled="false"        android:headerDividersEnabled="false"        android:smoothScrollbar="true"        ptr:ptrMode="both" /></LinearLayout>

第四步: findviewbyid 找到myPull_refresh_list 然後實現監聽介面 。運行一下項目先來讓你爽一把,滿足嗎? 繼續向下看!

注意運行項目可能報錯哦,將“Android-PullToRefresh-master ”下的 /bin/res檔案夾刪除自動重建 就可以解決了!

package com.vip.flushdemo;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.content.Context;import android.os.AsyncTask;import android.os.Bundle;import android.view.Menu;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.Toast;import com.handmark.pulltorefresh.library.PullToRefreshBase;import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener2;import com.handmark.pulltorefresh.library.PullToRefreshListView;public class MainActivity extends Activity implements        OnRefreshListener2<ListView> {    private PullToRefreshListView listView1;    private List<String> lists = new ArrayList<String>();// 類比資料    private MyArrayAdapter myArrayAdapter;// 資料Adapter    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        listView1 = (PullToRefreshListView) findViewById(R.id.myPull_refresh_list);        // 綁定Adapter        myArrayAdapter = new MyArrayAdapter(this,                android.R.layout.simple_list_item_1, getData());        listView1.setAdapter(myArrayAdapter);        listView1.setOnRefreshListener(this);// 記得綁定一下 監聽類    }    // 類比資料庫查詢    int index = 1;    private List<String> getData() {        for (int i = 0; i < 10; i++) {            lists.add("第" + index + "條");            index++;        }        return lists;    }    // Adapter 你也懂的    private class MyArrayAdapter extends ArrayAdapter<String> {        public MyArrayAdapter(Context context, int textViewResourceId,                List<String> objects) {            super(context, textViewResourceId, objects);        }    }    // 非同步方式類比請求資料    private class GetDataTask extends AsyncTask<Integer, Integer, Integer> {        @Override        protected void onProgressUpdate(Integer... values) {            super.onProgressUpdate(values);            myArrayAdapter.notifyDataSetChanged();// 重新整理Adapter            listView1.onRefreshComplete();// 告訴它 我們已經在後台資料請求完畢            Toast.makeText(MainActivity.this, "完成了", Toast.LENGTH_SHORT).show();        }        @Override        protected Integer doInBackground(Integer... params) {            getData();// 繼續刷資料            try {                Thread.sleep(2000);//暫停一下 只是為了效果更加明顯            } catch (Exception e) {                e.printStackTrace();            }            publishProgress(0);//通知前台線程            return 0;        }    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        getMenuInflater().inflate(R.menu.main, menu);        return true;    }    @Override    public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {        Toast.makeText(this, "下拉", Toast.LENGTH_SHORT).show();        index = 0;// 重新整理資料        lists.clear();        new GetDataTask().execute();    }    @Override    public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {        Toast.makeText(this, "上拉", Toast.LENGTH_SHORT).show();        new GetDataTask().execute();    }}

在此恭喜你學會了,有空要多學習一下 沒有jar包要怎麼寫哦,
舉一反三:
ExpandableListView
GridView
WebView
ScrollView
HorizontalScrollView
ViewPager
實現方式差不多!

最後:謝謝您的閱讀,您的支援就是我最大的動力!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.