recyclerview网络获取图片展示瀑布流MVP
来源:互联网 发布:加微信群软件 编辑:程序博客网 时间:2024/05/21 21:40
activity_main布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.myapplication.MainActivity"> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/btn" /><android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/recyclerview"></android.support.v7.widget.RecyclerView></LinearLayout>
MainActivity主类
package com.example.myapplication;import android.content.Intent;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.RecyclerView;import android.support.v7.widget.StaggeredGridLayoutManager;import android.view.View;import android.widget.Button;import android.widget.LinearLayout;import com.example.myapplication.adapter.RecyclerviewAdapter;import com.example.myapplication.bean.NewBean;import com.example.myapplication.presenter.RecyclerviewPresenter;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity implements RecyclerviewPresenter.viewCallBack { private RecyclerView recyclerView; List<NewBean.DataBean.ListBean> list=new ArrayList<>(); List<String> imageList; private RecyclerviewAdapter adapter; private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); recyclerView = (RecyclerView) findViewById(R.id.recyclerview); button = (Button) findViewById(R.id.btn); RecyclerviewPresenter recyclerviewPresenter = new RecyclerviewPresenter(this); recyclerviewPresenter.getinit(" http://120.27.23.105/product/getCarts?uid=100"); recyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, LinearLayout.VERTICAL));button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, SecondActivity.class); startActivity(intent); finish(); }}); } @Override public void success(final NewBean newBean) { runOnUiThread(new Runnable() { @Override public void run() { if(list==null){ list=new ArrayList<NewBean.DataBean.ListBean>(); } list.add(newBean.getData().get(0).getList().get(0)); String images = list.get(0).getImages(); String[] split = images.split("\\|"); if(imageList==null){ imageList=new ArrayList<>(); } for (int i=0;i<split.length;i++){ imageList.add(split[i]); } adapter = new RecyclerviewAdapter(MainActivity.this,imageList); recyclerView.setAdapter(adapter); } }); } @Override public void fail(Exception e) { }}适配器
package com.example.myapplication.adapter;import android.content.Context;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.view.WindowManager;import android.widget.ImageView;import com.example.myapplication.R;import com.nostra13.universalimageloader.core.ImageLoader;import java.util.List;import java.util.Random;/** * Created by Administrator on 2017/11/18. */public class RecyclerviewAdapter extends RecyclerView.Adapter<RecyclerviewAdapter.ImageViewHolder> { Context context; List<String> imageList; private final int itemWidth; public RecyclerviewAdapter(Context context, List<String> imageList) { this.context = context; this.imageList = imageList; WindowManager wm = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE); int width = wm.getDefaultDisplay().getWidth(); itemWidth = width / 3; } @Override public ImageViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view= LayoutInflater.from(context).inflate(R.layout.recyclerview_item,null); return new ImageViewHolder(view); } @Override public void onBindViewHolder(ImageViewHolder holder, int position) { ViewGroup.LayoutParams params = holder.iamge.getLayoutParams(); int itemHeight = 300 ; itemHeight = new Random().nextInt(500); if(itemHeight < 300){ itemHeight = 300 ; } params.width = itemWidth ; params.height = itemHeight ; holder.iamge.setLayoutParams(params); ImageLoader.getInstance().displayImage(imageList.get(position),holder.iamge); holder.iamge.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(listener==null){ listener.onClick(v); } } }); holder.iamge.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { listener.longClick(v); return false; } }); } @Override public int getItemCount() { return imageList.size(); } public class ImageViewHolder extends RecyclerView.ViewHolder { private final ImageView iamge; public ImageViewHolder(View view) { super(view); iamge = (ImageView) view.findViewById(R.id.image); } } private Listener listener; public void setListener(Listener listener){ this.listener=listener; } public interface Listener{ public void onClick(View view); public void longClick(View view); }}适配器布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"><ImageView android:layout_width="100dp" android:layout_height="100dp" android:id="@+id/image" android:src="@mipmap/ic_launcher" /></LinearLayout>iamgeLoger配置
package com.example.myapplication;import android.app.Application;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;/** * Created by Administrator on 2017/11/18. */public class MyApp extends Application{ @Override public void onCreate() { super.onCreate(); ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this).build(); ImageLoader.getInstance().init(configuration); }}model层
package com.example.myapplication.model;import com.example.myapplication.bean.NewBean;import com.google.gson.Gson;import java.io.IOException;import okhttp3.Call;import okhttp3.Callback;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.Response;/** * Created by Administrator on 2017/11/18. */public class RecyclerviewModel { public void getData(String url, final modelCallBack modelCallBack){ OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(url) .build(); client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { String string = response.body().string(); Gson gson = new Gson(); NewBean newBean = gson.fromJson(string, NewBean.class); modelCallBack.success(newBean); //Log.i("111111111111",string); } }); } public interface modelCallBack{ public void success(NewBean newBean); public void fail(Exception e); }}presenter层
package com.example.myapplication.presenter;import android.util.Log;import com.example.myapplication.bean.NewBean;import com.example.myapplication.model.RecyclerviewModel;/** * Created by Administrator on 2017/11/18. */public class RecyclerviewPresenter{ RecyclerviewModel recyclerviewModel=new RecyclerviewModel(); viewCallBack viewCallBack; public RecyclerviewPresenter(viewCallBack viewCallBack){ this.viewCallBack=viewCallBack; } public interface viewCallBack{ public void success(NewBean newBean); public void fail(Exception e); } public void getinit(String url){ recyclerviewModel.getData(url, new RecyclerviewModel.modelCallBack() { @Override public void success(NewBean newBean) { viewCallBack.success(newBean); Log.i("11111111111",newBean+""); System.out.println(newBean); } @Override public void fail(Exception e) { viewCallBack.fail(e); } }); } }
阅读全文
0 0
- recyclerview网络获取图片展示瀑布流MVP
- android网络数据获取与解析+RecyclerView数据展示实现ListView、GridView、瀑布流切换
- recyclerView+MVP实现瀑布流
- OkHttp,MVP,RecyclerView瀑布流
- RecyclerView瀑布流展示数据
- Android使用OKHTTP网络框架请求数据,RecyclerView结合Glide展示图片,瀑布流布局样式
- Android_Volley+Image-Loader+RecyclerView实现网络下载图片瀑布流
- RecyclerView瀑布流的形式利用Gilde加载网络图片
- 练习记录0821--RecyclerView实现网络图片瀑布流
- 使用RecyclerView展示瀑布流的效果
- Android RecyclerView瀑布流展示(OkHttp协议)
- RecyclerView实现图片瀑布流
- RecyclerView 瀑布流显示图片
- RecyclerView 瀑布流显示图片
- RecyclerView高仿IOS照片瀑布流式展示图片效果
- MVP获取网络数据并展示
- Fresco和 RecyclerView 实现瀑布流 <图片是用本地图片来模拟网络图片的>
- android:MVP网络请求数据,运用RecyclerView-LinearLayout展示
- 航天科工智慧产业
- php笔记2
- NOIP2017游记
- windows安装mongoDB
- 57.笔记 MySQL学习——查询扩展全文搜索
- recyclerview网络获取图片展示瀑布流MVP
- Druid记录
- hdu2092
- 异步任务AysncTask的初步分离
- Linux下Apache配置虚拟主机
- 指针变量初始化
- 解禁股20171118
- 2017第八届蓝桥杯 C/C++C组真题及题解
- 融360赴美IPO:大数据能否助其吸引海外投资者青睐?