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;
    }
}
 
 




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值