recycleview加载数据实现数据刷新上拉下拉 Demo 用到retrofit 和mvp模式 图片展示
来源:互联网 发布:驾驶员网络教学培训 编辑:程序博客网 时间:2024/06/04 18:27
布局文件
<?xml version="1.0" encoding="utf-8"?><RelativeLayout 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" tools:context="com.example.guoqiang7day.MainActivity"> <com.jcodecraeer.xrecyclerview.XRecyclerView android:id="@+id/recycleview01" android:layout_width="match_parent" android:layout_height="match_parent"> </com.jcodecraeer.xrecyclerview.XRecyclerView> </RelativeLayout>
item01 条目布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto"> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="200dp"> <com.facebook.drawee.view.SimpleDraweeView android:id="@+id/SimpleDraweeView01" android:layout_width="200dp" android:layout_height="200dp" app:roundAsCircle="true" /> <TextView android:id="@+id/Titleview01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="25sp" android:text="asdfsfd" /> </LinearLayout></LinearLayout>
//add依赖compile 'com.facebook.fresco:fresco:1.5.0'compile 'com.jakewharton:butterknife:8.8.1' //找控件annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'compile 'com.squareup.retrofit2:retrofit:2.3.0' //网络获取数据implementation 'com.android.support:recyclerview-v7:27.0.1' //条目compile 'com.jcodecraeer:xrecyclerview:1.3.2'compile 'com.squareup.retrofit2:converter-gson:2.3.0' //解析AddC Application 里面compile 'com.android.support:recyclerview-v7:25.3.1'
<uses-permission android:name="android.permission.INTERNET"></uses-permission><application android:name=".IApplication"
1.
package com.example.guoqiang7day;import com.example.guoqiang7day.Bean01.Bean;import retrofit2.Call;import retrofit2.http.GET;import retrofit2.http.Query;/** * Created by gq on 2017/12/5. */public interface RetrofitServer { @GET("/nba/") //api.tianapi.com/nba/?key=71e58b5b2f930eaf1f937407acde08fe&num=10 Call<Bean> getServer(@Query("key") String key,@Query("num") String num);}2.
package com.example.guoqiang7day;import android.app.Application;import com.example.guoqiang7day.Bean01.Bean;import com.facebook.drawee.backends.pipeline.Fresco;import retrofit2.Call;import retrofit2.Retrofit;import retrofit2.converter.gson.GsonConverterFactory;/** * Created by gq on 2017/12/5. */public class IApplication extends Application{ public static RetrofitServer server1; @Override public void onCreate() { super.onCreate(); Fresco.initialize(this); //http://api.tianapi.com/nba/?key=71e58b5b2f930eaf1f937407acde08fe Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://api.tianapi.com") //前面地址头 .addConverterFactory(GsonConverterFactory.create()) .build(); server1 = retrofit.create(RetrofitServer.class); }}
3. model层接口
package com.example.guoqiang7day.modle;import retrofit2.Callback;/** * Created by gq on 2017/12/5. */public interface IMogetBase { public void getDatabse(String key,String num,Callback callback);}modle 实现类
package com.example.guoqiang7day.modle;import com.example.guoqiang7day.Bean01.Bean;import com.example.guoqiang7day.IApplication;import java.security.Key;import retrofit2.Call;import retrofit2.Callback;/** * Created by gq on 2017/12/5. */public class MymodleDataBean implements IMogetBase{ @Override public void getDatabse( String key,String num,Callback callback) { //直接引用人retrofit的请求方式 /* Call<Bean> call = IApplication.server1.getServer(key,num); call.enqueue(callback);*/ Call<Bean> call = IApplication.server1.getServer(key, num); call.enqueue(callback); }}
p层
package com.example.guoqiang7day.presenter;import android.content.Context;import com.example.guoqiang7day.Bean01.Bean;import com.example.guoqiang7day.MainActivity;import com.example.guoqiang7day.modle.MymodleDataBean;import com.example.guoqiang7day.view.IShouDataBean;import retrofit2.Call;import retrofit2.Callback;import retrofit2.Response;/** * Created by gq on 2017/12/5. */public class Mypresenter { private Context context; private MymodleDataBean modle; private IShouDataBean view; public Mypresenter(Context context, IShouDataBean view) { this.context=context; this.view=view; modle=new MymodleDataBean(); } public void aishasha(int num) { modle.getDatabse("71e58b5b2f930eaf1f937407acde08fe",num+"", new Callback() { @Override public void onResponse(Call call, Response response) { Bean bean = (Bean) response.body(); view.MyShouDatabaseView(bean); } @Override public void onFailure(Call call, Throwable t) { } }); }}
v层 activity 层
package com.example.guoqiang7day;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import com.example.guoqiang7day.Adapter.MyAdapter;import com.example.guoqiang7day.Bean01.Bean;import com.example.guoqiang7day.presenter.Mypresenter;import com.example.guoqiang7day.view.IShouDataBean;import com.jcodecraeer.xrecyclerview.XRecyclerView;public class MainActivity extends AppCompatActivity implements IShouDataBean{ Mypresenter mypresenter=new Mypresenter(this,this); private XRecyclerView xRecyclerView; private int num1=15; private MyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); xRecyclerView = findViewById(R.id.recycleview01); mypresenter.aishasha(15); //调用获取值 LinearLayoutManager layoutManager = new LinearLayoutManager(this); xRecyclerView.setLayoutManager(layoutManager); xRecyclerView.setLoadingListener(new XRecyclerView.LoadingListener() { @Override public void onRefresh() { //当下拉刷新的时候,重新获取数据,所有curr要变回0,并且把集合list清空 mypresenter.aishasha(15); adapter.notifyDataSetChanged(); xRecyclerView.refreshComplete(); } @Override public void onLoadMore() { //当上拉加载的时候,因为一次获取是10个数据,所也在获取的时候就要在加10的地方开始获取// 如:第一次0——9;// 第二次10——19; num1+=5; mypresenter.aishasha(15); adapter.notifyDataSetChanged(); xRecyclerView.refreshComplete(); } }); } @Override public void MyShouDatabaseView(Bean bean) { //等待接收数据 if (adapter==null){ adapter = new MyAdapter(this,bean); xRecyclerView.setAdapter(adapter); }else { adapter.notifyDataSetChanged(); } }}
package com.example.guoqiang7day.Adapter;import android.content.Context;import android.support.v7.widget.RecyclerView;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import com.example.guoqiang7day.Bean01.Bean;import com.example.guoqiang7day.R;import com.facebook.drawee.view.SimpleDraweeView;import butterknife.BindView;import butterknife.ButterKnife;/** * Created by gq on 2017/12/5. */public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { Context context; Bean bean; public MyAdapter(Context context, Bean bean) { this.context = context; this.bean = bean; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { //视图V View view = View.inflate(context, R.layout.item01, null); return new ViewHolder(view); //绑定在一块 } @Override public void onBindViewHolder(ViewHolder holder, int position) { holder.mSimpleDraweeView01.setImageURI(bean.getNewslist().get(position).getPicUrl()); holder.mTitleview01.setText(bean.getNewslist().get(position).getTitle()); } @Override public int getItemCount() { return bean.getNewslist().size(); } static class ViewHolder extends RecyclerView.ViewHolder{ @BindView(R.id.Titleview01) TextView mTitleview01; @BindView(R.id.SimpleDraweeView01) SimpleDraweeView mSimpleDraweeView01; ViewHolder(View view) { super(view); ButterKnife.bind(this, view); } }}
阅读全文
0 0
- recycleview加载数据实现数据刷新上拉下拉 Demo 用到retrofit 和mvp模式 图片展示
- 上拉下拉刷新数据
- PullToRefreshListView 实现上拉下拉 都能 刷新数据
- Retrofit+RxJava+Okhttp+RecycleView+MVP简单的展示数据
- android上拉下拉加载更多数据
- 上拉下拉加载数据的应用.....
- XRecyclerView的上拉下拉加载数据
- Android_XRecyclerView上拉下拉加载数据
- pulltorefresh(上拉下拉加载数据) 使用方法!
- pulltorefresh(上拉下拉加载数据) 使用方法!
- Android_XRecyclerView上拉下拉加载数据
- Android_XRecyclerView上拉下拉加载数据
- Android_XRecyclerView上拉下拉加载数据
- SwipeRefreshLayout +RecycleView实现上拉加载更多和下拉刷新
- MVP模式的OKhttp请求网络数据,xrecyclerview上拉刷新,下拉加载
- RecycleView上拉加载和下拉刷新
- 展示数据,上拉加载,下拉刷新,一定要导入library.
- MVP框架使用Fretiofit获取网络数据使用xrecycleview实现上拉加载下拉刷新
- Collections.sort()方法的使用
- 使用Spring、SpringMvc、MyBatis搭建SSM框架
- Java分布式跟踪系统Zipkin(五):Brave源码分析-Brave和SpringMVC整合
- RecyclerView的用法
- Listview使用步骤
- recycleview加载数据实现数据刷新上拉下拉 Demo 用到retrofit 和mvp模式 图片展示
- 【Scikit-Learn 中文文档】模型持久化
- 使用RecyclerView中遇到的问题
- hadoop 源码打包
- Java分布式跟踪系统Zipkin(六):Brave源码分析-Brave和SpringBoot整合
- ibatis批量删除在配置文件中进行
- ajax获取json数据为多维数组时,前台js嵌套循环解析
- 操作系统 进程通信实验
- dict.setdefault(key, default=None)