PullToRefresh的使用

PullToRefresh的使用
 
下载地址:https://github.com/chrisbanes/Android-PullToRefresh
   
   1、改变控件顶部和底部是否可拉动。
      1)、在代码中调用控件的  setMode(Mode.BOTH)方法;
      2)、在配置文件中引用 xmlns:ptr="http://schemas.android.com/apk/res-auto" 命名空间,
            设置ptr:ptrMode="both"
   
   2、改变控件顶部和底部拖动时显示的图标和文字。
      1)、在代码中设置
              //上端
            ILoadingLayout loadingLayout = mPullRefreshListView.getLoadingLayoutProxy(true,false);
            loadingLayout.setPullLabel("下拉刷新");
            loadingLayout.setRefreshingLabel("正在刷新...");
            loadingLayout.setReleaseLabel("放开刷新...");
            loadingLayout.setLoadingDrawable(getResources().getDrawable(R.drawable.default_ptr_flip));
            
            //下端
            loadingLayout = mPullRefreshListView.getLoadingLayoutProxy(false,true);
            loadingLayout.setPullLabel("上拉加载");
            loadingLayout.setRefreshingLabel("正在加载...");
            loadingLayout.setReleaseLabel("放开加载...");
            loadingLayout.setLoadingDrawable(getResources().getDrawable(R.drawable.default_ptr_flip));
      
      2)、在配置文件中引用 xmlns:ptr="http://schemas.android.com/apk/res-auto" 命名空间,
                     设置ptr:ptrMode="ptrDrawable"
            
    3)、到library中values查看attr.xml提供的配置文件提供的属性。
        1)、 在代码中提供设置属性的方法在ILoadingLayout类中。
        2)、在配置文件中设置属性引用命名空间,提供属性名称。如:ptr:ptrMode="both"
        
     4)、实例代码
        public final class PullToRefreshListActivity extends ListActivity {
        
            static final int MENU_MANUAL_REFRESH = 0;
            static final int MENU_DISABLE_SCROLL = 1;
            static final int MENU_SET_MODE = 2;
            static final int MENU_DEMO = 3;
        
            private LinkedList mListItems;
            private PullToRefreshListView mPullRefreshListView;
            private ArrayAdapter mAdapter;
        
            /** Called when the activity is first created. */
            @Override
            public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_ptr_list);
        
                mPullRefreshListView = (PullToRefreshListView) findViewById(R.id.pull_refresh_list);
        
                mPullRefreshListView.setMode(Mode.BOTH);
                // Set a listener to be invoked when the list should be refreshed.
                
            /*    mPullRefreshListView.setOnRefreshListener(new OnRefreshListener() {
                    @Override
                    public void onRefresh(PullToRefreshBase refreshView) {
                        String label = DateUtils.formatDateTime(getApplicationContext(), System.currentTimeMillis(),
                                DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_ABBREV_ALL);
        
                        // Update the LastUpdatedLabel
                        refreshView.getLoadingLayoutProxy().setLastUpdatedLabel(label);
        
                        // Do work to refresh the list here.
                        new GetDataTask().execute();
                    }
                });
        
                // Add an end-of-list listener
                mPullRefreshListView.setOnLastItemVisibleListener(new OnLastItemVisibleListener() {
        
                    @Override
                    public void onLastItemVisible() {
                        Toast.makeText(PullToRefreshListActivity.this, "End of List!", Toast.LENGTH_SHORT).show();
                    }
                });*/
                
                /**
                 * 设置两端加载时显示的内容
                 */
                //上端
                ILoadingLayout loadingLayout = mPullRefreshListView.getLoadingLayoutProxy(true,false);
                loadingLayout.setPullLabel("下拉刷新");
                loadingLayout.setRefreshingLabel("正在刷新...");
                loadingLayout.setReleaseLabel("放开刷新...");
                //loadingLayout.setLoadingDrawable(getResources().getDrawable(R.drawable.default_ptr_flip));
                
                //下端
                loadingLayout = mPullRefreshListView.getLoadingLayoutProxy(false,true);
                loadingLayout.setPullLabel("上拉加载");
                loadingLayout.setRefreshingLabel("正在加载...");
                loadingLayout.setReleaseLabel("放开加载...");
                //loadingLayout.setLoadingDrawable(getResources().getDrawable(R.drawable.default_ptr_flip));
                
                mPullRefreshListView.setOnRefreshListener(new OnRefreshListener2() {
        
                    @Override
                    public void onPullDownToRefresh(PullToRefreshBase refreshView) {
                        System.out.println("down");
                        new GetDataTask().execute();
                    }
        
                    @Override
                    public void onPullUpToRefresh(PullToRefreshBase refreshView) {
                        System.out.println("up");
                        new GetDataTask().execute();
                    }
                });
                
                ListView actualListView = mPullRefreshListView.getRefreshableView();
        
                // Need to use the Actual ListView when registering for Context Menu
                registerForContextMenu(actualListView);
        
                mListItems = new LinkedList();
                mListItems.addAll(Arrays.asList(mStrings));
        
                mAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, mListItems);
        
                /**
                 * Add Sound Event Listener
                 */
                SoundPullEventListener soundListener = new SoundPullEventListener(this);
                soundListener.addSoundEvent(State.PULL_TO_REFRESH, R.raw.pull_event);
                soundListener.addSoundEvent(State.RESET, R.raw.reset_sound);
                soundListener.addSoundEvent(State.REFRESHING, R.raw.refreshing_sound);
                mPullRefreshListView.setOnPullEventListener(soundListener);
        
                // You can also just use setListAdapter(mAdapter) or
                mPullRefreshListView.setAdapter(mAdapter);
                actualListView.setAdapter(mAdapter);
            }
        
            private class GetDataTask extends AsyncTask {
        
                @Override
                protected String[] doInBackground(Void... params) {
                    // Simulates a background job.
                    try {
                        Thread.sleep(4000);
                    } catch (InterruptedException e) {
                    }
                    return mStrings;
                }
        
                @Override
                protected void onPostExecute(String[] result) {
                    mListItems.addFirst("Added after refresh...");
                    mAdapter.notifyDataSetChanged();
        
                    // Call onRefreshComplete when the list has been refreshed.
                    mPullRefreshListView.onRefreshComplete();
        
                    super.onPostExecute(result);
                }
            }
        
            @Override
            public boolean onCreateOptionsMenu(Menu menu) {
                menu.add(0, MENU_MANUAL_REFRESH, 0, "Manual Refresh");
                menu.add(0, MENU_DISABLE_SCROLL, 1,
                        mPullRefreshListView.isScrollingWhileRefreshingEnabled() ? "Disable Scrolling while Refreshing"
                                : "Enable Scrolling while Refreshing");
                menu.add(0, MENU_SET_MODE, 0, mPullRefreshListView.getMode() == Mode.BOTH ? "Change to MODE_PULL_DOWN"
                        : "Change to MODE_PULL_BOTH");
                menu.add(0, MENU_DEMO, 0, "Demo");
                return super.onCreateOptionsMenu(menu);
            }
        
            @Override
            public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
                AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
        
                menu.setHeaderTitle("Item: " + getListView().getItemAtPosition(info.position));
                menu.add("Item 1");
                menu.add("Item 2");
                menu.add("Item 3");
                menu.add("Item 4");
        
                super.onCreateContextMenu(menu, v, menuInfo);
            }
        
            @Override
            public boolean onPrepareOptionsMenu(Menu menu) {
                MenuItem disableItem = menu.findItem(MENU_DISABLE_SCROLL);
                disableItem
                        .setTitle(mPullRefreshListView.isScrollingWhileRefreshingEnabled() ? "Disable Scrolling while Refreshing"
                                : "Enable Scrolling while Refreshing");
        
                MenuItem setModeItem = menu.findItem(MENU_SET_MODE);
                setModeItem.setTitle(mPullRefreshListView.getMode() == Mode.BOTH ? "Change to MODE_FROM_START"
                        : "Change to MODE_PULL_BOTH");
        
                return super.onPrepareOptionsMenu(menu);
            }
        
            @Override
            public boolean onOptionsItemSelected(MenuItem item) {
        
                switch (item.getItemId()) {
                    case MENU_MANUAL_REFRESH:
                        new GetDataTask().execute();
                        mPullRefreshListView.setRefreshing(false);
                        break;
                    case MENU_DISABLE_SCROLL:
                        mPullRefreshListView.setScrollingWhileRefreshingEnabled(!mPullRefreshListView
                                .isScrollingWhileRefreshingEnabled());
                        break;
                    case MENU_SET_MODE:
                        mPullRefreshListView.setMode(mPullRefreshListView.getMode() == Mode.BOTH ? Mode.PULL_FROM_START
                                : Mode.BOTH);
                        break;
                    case MENU_DEMO:
                        mPullRefreshListView.demo();
                        break;
                }
        
                return super.onOptionsItemSelected(item);
            }
        
            private String[] mStrings = { "Abbaye de Belloc", "Abbaye du Mont des Cats", "Abertam", "Abondance", "Ackawi",
                    "Acorn", "Adelost", "Affidelice au Chablis", "Afuega'l Pitu", "Airag", "Airedale", "Aisy Cendre",
                    "Allgauer Emmentaler", "Abbaye de Belloc", "Abbaye du Mont des Cats", "Abertam", "Abondance", "Ackawi",
                    "Acorn", "Adelost", "Affidelice au Chablis", "Afuega'l Pitu", "Airag", "Airedale", "Aisy Cendre",
                    "Allgauer Emmentaler" };
            }
       
     5)、配置文件
        
                    android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical" >
        
                            xmlns:ptr="http://schemas.android.com/apk/res-auto"
                android:id="@+id/pull_refresh_scrollview"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
               
                ptr:ptrAdapterViewBackground="#660"
               
                ptr:ptrMode="both">
                                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:padding="8dp"
                    android:text="@string/filler_text"
                    android:textSize="16sp" />
           
        

创新互联建站专业提供成都主机托管四川主机托管成都服务器托管四川服务器托管,支持按月付款!我们的承诺:贵族品质、平民价格,机房位于中国电信/网通/移动机房,大邑服务器托管服务有保障!


文章题目:PullToRefresh的使用
路径分享:http://ybzwz.com/article/pggsjo.html