您的位置:首页 > 其它

RecyclerView的上拉加载下拉刷新和viewpager自动有点无限轮播

2017-10-25 20:02 501 查看
//////////////////////////main.xml////////////////////////////////

<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="wangziying.baway.com.wangyue.MainActivity">

<com.youth.banner.Banner
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/banner"
android:layout_width="match_parent"
android:layout_height="220dp" />

<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swlt"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scrollbars="vertical"
>
<android.support.v7.widget.RecyclerView
android:id="@+id/rlv"
android:layout_width="match_parent"
android:layout_height="match_parent">

</android.support.v7.widget.RecyclerView>

</android.support.v4.widget.SwipeRefreshLayout>

</LinearLayout>


先走网络框架


/////////Okhttputils///////////

public class OkhttpUtils {
private static OkhttpUtils okHttpUtils;
private final OkHttpClient httpClient;
private final Handler handler;

//构造方法私有化
private OkhttpUtils() {

HttpLoggingInterceptor LoggingInterceptor = new HttpLoggingInterceptor();

LoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BASIC);
httpClient = new OkHttpClient.Builder()
.addInterceptor(LoggingInterceptor)
.build();
handler = new Handler(Looper.getMainLooper());
}

public static OkhttpUtils getInstance() {
if (okHttpUtils == null) {
synchronized (OkhttpUtils.class) {
if (okHttpUtils == null) {
okHttpUtils = new OkhttpUtils();
}
}
}
return okHttpUtils;
}

public void doGet(String url, final Class clazz, final OnNetListener onNetListener) {
Request request = new Request.Builder()
.url(url)
.build();

httpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {

}

@Override
public void onResponse(Call call, final Response response) throws IOException {

String string = response.body().string();
final ItemBean itemBean= (ItemBean) new Gson().fromJson(string, clazz);

handler.post(new Runnable() {
@Override
public void run() {
try {
onNetListener.onSuccess(itemBean);
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
});
}
}
////////////////OnNetListener/////////////////
public interface OnNetListener {

public void onSuccess(ItemBean baseBean) throws IOException;

public void onError(IOException e);

}
////////////////////Itembean////////////////////
public class ItemBean {

private int code;

public int getCode() {
return code;
}

public void setCode(int code) {
this.code = code;
}
}
////////////////UserBean//////////////////////
自己在网上获取到进行解析


///////////////////MainActivity/////////////////////

public class MainActivity extends AppCompatActivity {

private RecyclerView rlv;
private SwipeRefreshLayout swlt;
private Adapter adapter;
private Banner mBanner;
private RecyclerView mRlv;
private SwipeRefreshLayout mSwlt;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mBanner = (Banner) findViewById(R.id.banner);
//viewpager无限轮播
mBanner.setImageLoader(new GlideImageLoader());
ArrayList<String> list = new ArrayList<>();
list.add("http://imgsrc.baidu.com/image/c0%3Dshijue1%2C0%2C0%2C294%2C40/sign=dce088c1a3ec8a1300175fa39f6afbfa/622762d0f703918f2b2091e45b3d269759eec42f.jpg");
list.add("http://img1.imgtn.bdimg.com/it/u=1727466040,2801574451&fm=27&gp=0.jpg");
list.add("http://imgsrc.baidu.com/image/c0%3Dshijue1%2C0%2C0%2C294%2C40/sign=407b2e95de3f8794c7f2406dba726481/a5c27d1ed21b0ef4c9eb5573d7c451da81cb3e98.jpg");
mBanner.setImages(list);
mBanner.start();
mBanner.setDelayTime(3000);

//默认显示
inint(true);

//      初始化组件
rlv = (RecyclerView) findViewById(R.id.rlv);

swlt = (SwipeRefreshLayout) findViewById(R.id.swlt);

//        设置布局管理器

rlv.setLayoutManager(new LinearLayoutManager(this));
//        网络请求数据

//下拉刷新
swlt.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
inint(true);
}
}, 2000);
}
});

//上拉加载
rlv.setOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
LinearLayoutManager layoutManager = (LinearLayoutManager) rlv.getLayoutManager();
int itemCount = layoutManager.getItemCount();
int lastVisibleItemPosition = layoutManager.findLastVisibleItemPosition();
if (newState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) {
if (lastVisibleItemPosition == itemCount - 1) {
inint(false);
}
}
}
});

}

private void inint(final boolean isRefresh) {

OkhttpUtils.getInstance().doGet("http://169.254.52.218/mobile/index.php?act=goods&op=goods_list&page=100", Userbean.class, new OnNetListener() {

@Override
public void onSuccess(ItemBean baseBean) throws IOException {

Userbean user = (Userbean) baseBean;

List<Userbean.DatasBean.GoodsListBean> goods_list = user.getDatas().getGoods_list();

adapter = new Adapter(MainActivity.this, goods_list);
rlv.setAdapter(adapter);

//判断刷新
if (isRefresh) {
adapter.refresh(goods_list);
swlt.setRefreshing(false);
} else {
adapter.loadMore(goods_list);
}
}

@Override
public void onError(IOException e) {

}
});

b756
}
////////////////////适配器里的一个布局////////////////////
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<ImageView
android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

<TextView
android:id="@+id/tv"
android:layout_marginLeft="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp" />
</LinearLayout>
//////////////////适配器///////////////////////////
public class Adapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

private Context context;
private List<Userbean.DatasBean.GoodsListBean> list=new ArrayList<>();

public Adapter(Context context, List<Userbean.DatasBean.GoodsListBean> list) {
this.context = context;
this.list = list;
}

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

View view = LayoutInflater.from(context).inflate(R.layout.layout, null);
return new Myholder(view);
}

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {

Myholder hol= (Myholder) holder;

String url = list.get(position).getGoods_image_url();

ImageLoader.getInstance().displayImage(url,hol.img);

hol.tv.setText(list.get(position).getGoods_name());
}

@Override
public int getItemCount() {
return list.size();
}

class Myholder extends RecyclerView.ViewHolder{

private  ImageView img;
private  TextView tv;

public Myholder(View itemView) {
super(itemView);

img= (ImageView)itemView.findViewById(R.id.img);
tv = (TextView)itemView.findViewById(R.id.tv);

/*点击跳转界面,可以根据条件来确定做不做*/
tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

Intent intent=new Intent(context, GoodActivity.class);
context.startActivity(intent);

}
});
}
}

//在适配器里面设置刷新和加载
public void refresh(List<Userbean.DatasBean.GoodsListBean> list){
this.list.clear();
this.list.addAll(list);
notifyDataSetChanged();
}

public void loadMore(List<Userbean.DatasBean.GoodsListBean> list){
this.list.addAll(list);
notifyDataSetChanged();
}
}
}
//////////////////////////图片加载/////
public class Myapp extends Application {

@Override
public void onCreate() {
super.onCreate();

ImageLoaderConfiguration configuration=new ImageLoaderConfiguration.Builder(this).build();

ImageLoader.getInstance().init(configuration);
}
}
//////////////重新设置图片(viewpager)详细去banmer上了解///////////////////////////
public class GlideImageLoader extends ImageLoader {

@Override
public void displayImage(Context context, Object path, ImageView imageView) {
com.nostra13.universalimageloader.core.ImageLoader.getInstance().displayImage((String) path,imageView);
}
}



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: