温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

PullToRefresh的使用

发布时间:2020-06-28 06:44:03 来源:网络 阅读:1642 作者:向往宇宙 栏目:移动开发

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<String> mListItems;
            private PullToRefreshListView mPullRefreshListView;
            private ArrayAdapter<String> 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<ListView>() {
                    @Override
                    public void onRefresh(PullToRefreshBase<ListView> 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<ListView>() {
        
                    @Override
                    public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
                        System.out.println("down");
                        new GetDataTask().execute();
                    }
        
                    @Override
                    public void onPullUpToRefresh(PullToRefreshBase<ListView> 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<String>();
                mListItems.addAll(Arrays.asList(mStrings));
        
                mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mListItems);
        
                /**
                 * Add Sound Event Listener
                 */
                SoundPullEventListener<ListView> soundListener = new SoundPullEventListener<ListView>(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<Void, Void, String[]> {
        
                @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)、配置文件
         <?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.handmark.pulltorefresh.library.PullToRefreshScrollView
                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">
                <TextView
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:padding="8dp"
                    android:text="@string/filler_text"
                    android:textSize="16sp" />
            </com.handmark.pulltorefresh.library.PullToRefreshScrollView>
        </LinearLayout>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI