pulltorefresh上拉下拉刷新的用法
1、在开元网站 https://github.com/chrisbanes/Android-PullToRefresh , 中下载压缩包。
2、下载本地目录中,然后打开项目,把library复制出来改名,路径最好不要有中文
3、在file中import module 把library文件,导入项目中,
4、给自己的项目以添加依赖的方式,把library文件添加上,
(有可能会报错,然后点击报错处下载版本)
然后就能用了。
MaiActivity布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.day16_pulltorefresh.MainActivity"> <android.support.design.widget.TabLayout android:id="@+id/Tab_layout" android:layout_width="match_parent" android:layout_height="40dp" app:tabGravity="fill" app:tabIndicatorColor="@color/colorAccent" app:tabMode="fixed" app:tabSelectedTextColor="@color/colorPrimaryDark" app:tabTextColor="@color/colorPrimary" > </android.support.design.widget.TabLayout> <android.support.v4.view.ViewPager android:id="@+id/vp" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v4.view.ViewPager> </LinearLayout>
MaiActivity代码:
public class MainActivity extends AppCompatActivity { private TabLayout tabLayout; private ViewPager viewPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tabLayout = (TabLayout) findViewById(R.id.Tab_layout); viewPager = (ViewPager) findViewById(R.id.vp);
final List<String> list=new ArrayList<>(); list.add("ListView"); list.add("GridView"); list.add("ScrollView");
//防止fragment销毁据
viewPager.setOffscreenPageLimit(list.size());
viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) { @Override public CharSequence getPageTitle(int position) { return list.get(position); } @Override public Fragment getItem(int position) { Fragment fragment=null; switch (position){ case 0: fragment=new FragmentList(); break; case 1: fragment=new FragmentGrid(); break; case 2: fragment=new FragmentScroll(); break; default: break; } return fragment; } @Override public int getCount() { return list.size(); } }); tabLayout.setupWithViewPager(viewPager); } }
listView的布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:background="#f89" android:layout_height="match_parent"> <com.handmark.pulltorefresh.library.PullToRefreshListView xmlns:ptr="http://schemas.android.com/apk/res-auto" android:id="@+id/refresh_list_view" android:layout_width="match_parent" android:layout_height="match_parent" ptr:ptrDrawable="@drawable/default_ptr_flip" ptr:ptrAnimationStyle="flip" ptr:ptrHeaderBackground="#383838" ptr:ptrHeaderTextColor="#FFFFFF" > </com.handmark.pulltorefresh.library.PullToRefreshListView> </LinearLayout>
ListView代码:
public class FragmentList extends Fragment{ List<DataDataBean.ResultsBean> list=new ArrayList<>(); private PullToRefreshListView refreshListView; private ListAdapter adapter; private int num_page=1; private ILoadingLayout startLabels; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_list, container, false); refreshListView = (PullToRefreshListView) view.findViewById(R.id.refresh_list_view); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); geturlconn(); refreshListView.setMode(PullToRefreshBase.Mode.BOTH); startLabels = refreshListView.getLoadingLayoutProxy(true, false); startLabels.setPullLabel("下拉刷新"); startLabels.setRefreshingLabel("正在刷新..."); startLabels.setReleaseLabel("放开刷新"); ILoadingLayout endLabels = refreshListView.getLoadingLayoutProxy(false, true); endLabels.setPullLabel("上拉刷新"); endLabels.setRefreshingLabel("正在载入..."); endLabels.setReleaseLabel("放开刷新..."); refreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
//解析有一个工具类 String path="xxxxxxxxxxxxxxxxxxxxxxx"; NetConnection.getconnection(getActivity(), path, new CallJsonBack() { @Override public void getcallBack(String json) { Gson gson=new Gson(); DataDataBean dataDataBean = gson.fromJson(json, DataDataBean.class); Log.i("------list2",dataDataBean.toString()); list.clear(); list.addAll(0,dataDataBean.getResults()); setAdapter(); refreshListView.onRefreshComplete(); startLabels.setLastUpdatedLabel("上次更新时间:"+new SimpleDateFormat("HH:mm").format(new Date(System.currentTimeMillis())));//last最近的,最后一次update修改/更新 } }); } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) { num_page++; geturlconn(); } }); } private void geturlconn() { String path="xxxxxxxxxxxxxx/"+num_page;
//解析有工具类 NetConnection.getconnection(getActivity(), path, new CallJsonBack() { @Override public void getcallBack(String json) { Gson gson=new Gson(); DataDataBean dataDataBean = gson.fromJson(json, DataDataBean.class); Log.i("----list1",dataDataBean.toString()); list.addAll(dataDataBean.getResults()); setAdapter(); refreshListView.onRefreshComplete(); } }); } private void setAdapter() { if (adapter==null){ adapter = new ListAdapter(list,getActivity()); refreshListView.setAdapter(adapter); }else { adapter.notifyDataSetChanged(); } } }
适配器:多条目加载
public class ListAdapter extends BaseAdapter{ List<DataDataBean.ResultsBean> list; Context con; private int TEXT_ONLY = 0; private int IMAGE_TEXT = 1; public ListAdapter(List<DataDataBean.ResultsBean> list, Context con) { this.list = list; this.con = con; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int i) { return list.get(i); } @Override public long getItemId(int i) { return i; } @Override public int getViewTypeCount() {//返回有多少种条目的视图 return 2; } @Override public int getItemViewType(int position) {//返回当前条目视图的类型 //根据当前位置是否有图片决定,该条目的类型是什么 if (list.get(position).getImages() != null){ return IMAGE_TEXT; } return TEXT_ONLY; } @Override public View getView(int i, View view, ViewGroup viewGroup) { if (getItemViewType(i) == TEXT_ONLY){ TextHolder holder; if (view == null){ view = View.inflate(con, R.layout.only_txt,null); holder = new TextHolder(); holder.textView = view.findViewById(R.id.text_title); view.setTag(holder); }else { holder = (TextHolder) view.getTag(); } holder.textView.setText(list.get(i).getDesc()); }else if (getItemViewType(i) == IMAGE_TEXT){ ImageHolder holder; if (view == null){ view = View.inflate(con, R.layout.image_right,null); holder = new ImageHolder(); holder.textView = view.findViewById(R.id.text_title); holder.imageView = view.findViewById(R.id.image_view); view.setTag(holder); }else { holder = (ImageHolder) view.getTag(); } holder.textView.setText(list.get(i).getDesc()); //设置图片的显示 工具类 ImageLoader.getInstance().displayImage(list.get(i).getImages().get(0),holder.imageView, ImageUtil.getoption()); } return view; } private class TextHolder{ TextView textView; } private class ImageHolder{ TextView textView; ImageView imageView; } }