开源项目PullToRefresh详解(三)——PullToRefreshScrollView

和前几篇文章一样,这里还是先设置布局文件,然后找到这个控件。只不过这里要简单很多。
1.布局文件
开源项目PullToRefresh详解(三)——PullToRefreshScrollView
文章图片


开源项目PullToRefresh详解(三)——PullToRefreshScrollView
文章图片

和ScrollView不同的是,这里不用放一个linearLayout来做内容的容器,直接放入要显示的东西就行。

2.找到控件并进行设置,这里直接贴上Activity的代码
开源项目PullToRefresh详解(三)——PullToRefreshScrollView
文章图片
/******************************************************************************* * Copyright 2011, 2012 Chris Banes. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *******************************************************************************/ package com.handmark.pulltorefresh.samples; import android.app.Activity; import android.os.AsyncTask; import android.os.Bundle; import android.widget.ScrollView; import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener; import com.handmark.pulltorefresh.library.PullToRefreshScrollView; public final class PullToRefreshScrollViewActivity extends Activity {PullToRefreshScrollView mPullRefreshScrollView; ScrollView mScrollView; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ptr_scrollview); //找到控件 mPullRefreshScrollView = (PullToRefreshScrollView) findViewById(R.id.pull_refresh_scrollview); //设置监听器,监听器中执行异步任务 mPullRefreshScrollView.setOnRefreshListener(new OnRefreshListener() {@Override public void onRefresh(PullToRefreshBase refreshView) { new GetDataTask().execute(); } }); mScrollView = mPullRefreshScrollView.getRefreshableView(); }private class GetDataTask extends AsyncTask {@Override protected String[] doInBackground(Void... params) { // Simulates a background job. try { Thread.sleep(4000); } catch (InterruptedException e) { } return null; }@Override protected void onPostExecute(String[] result) { // Do some stuff here// Call onRefreshComplete when the list has been refreshed. //注意:执行完后通知控件刷新完成 mPullRefreshScrollView.onRefreshComplete(); super.onPostExecute(result); } }}

开源项目PullToRefresh详解(三)——PullToRefreshScrollView
文章图片

下面是横向的ScrollView
1.布局文件,就是几个textview
开源项目PullToRefresh详解(三)——PullToRefreshScrollView
文章图片

开源项目PullToRefresh详解(三)——PullToRefreshScrollView
文章图片
【开源项目PullToRefresh详解(三)——PullToRefreshScrollView】
2.activity中的代码,和上面基本一样
开源项目PullToRefresh详解(三)——PullToRefreshScrollView
文章图片
/******************************************************************************* * Copyright 2011, 2012 Chris Banes. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *******************************************************************************/ package com.handmark.pulltorefresh.samples; import android.app.Activity; import android.os.AsyncTask; import android.os.Bundle; import android.widget.HorizontalScrollView; import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener; import com.handmark.pulltorefresh.library.PullToRefreshHorizontalScrollView; public final class PullToRefreshHorizontalScrollViewActivity extends Activity {PullToRefreshHorizontalScrollView mPullRefreshScrollView; HorizontalScrollView mScrollView; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ptr_horizontalscrollview); mPullRefreshScrollView = (PullToRefreshHorizontalScrollView) findViewById(R.id.pull_refresh_horizontalscrollview); mPullRefreshScrollView.setOnRefreshListener(new OnRefreshListener() {@Override public void onRefresh(PullToRefreshBase refreshView) { new GetDataTask().execute(); } }); mScrollView = mPullRefreshScrollView.getRefreshableView(); }private class GetDataTask extends AsyncTask {@Override protected String[] doInBackground(Void... params) { // Simulates a background job. try { Thread.sleep(4000); } catch (InterruptedException e) { } return null; }@Override protected void onPostExecute(String[] result) { // Do some stuff here// Call onRefreshComplete when the list has been refreshed. mPullRefreshScrollView.onRefreshComplete(); super.onPostExecute(result); } }}

开源项目PullToRefresh详解(三)——PullToRefreshScrollView
文章图片

这里我们来注意下这部分
mPullRefreshScrollView = (PullToRefreshHorizontalScrollView) findViewById(R.id.pull_refresh_horizontalscrollview); mPullRefreshScrollView.setOnRefreshListener(new OnRefreshListener() {@Override public void onRefresh(PullToRefreshBase refreshView) { new GetDataTask().execute(); } });
____________________________________________________________________________________________________

mPullRefreshScrollView.setOnRefreshListener(new OnRefreshListener() {@Override public void onRefresh(PullToRefreshBase refreshView) { new GetDataTask().execute(); } });


它设计的时候通过传入的范型来改变监听器的内容,这样就可以用一个监听器类OnRefreshListener来完成多种操作了,设计十分精妙!

    推荐阅读