RecycleView多条目加载
来源:互联网 发布:网络语种马是什么意思 编辑:程序博客网 时间:2024/05/16 05:58
1.导入RecycleView的依赖和
compile ‘com.android.support:recyclerview-v7:23.2.0’
//图片加载框架加载图片
compile ‘com.squareup.picasso:picasso:2.5.1’
2.创建适配器
import android.content.Context;import android.support.v7.widget.RecyclerView;import android.util.Log;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TextView;import com.comm.text.R;import com.squareup.picasso.Picasso;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;/** * Created by Love_you on 2017/10/13 0013. */public class Recycler_variety_Adapter extends RecyclerView.Adapter { //定义三种常量 表示三种条目类型 public static final int TYPE_PULL_IMAGE = 0; public static final int TYPE_RIGHT_IMAGE = 1; private Context context; private JSONArray data; private JSONArray image_list; private String url; public Recycler_variety_Adapter(Context context, JSONArray data) { this.context = context; this.data = data; } //加载视图 @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { //创建不同的 ViewHolder View view; //根据viewtype来创建条目 if(viewType==TYPE_PULL_IMAGE){ view =View.inflate(context, R.layout.item_right_img,null); return new PullImageHolder(view); }else if(viewType==TYPE_RIGHT_IMAGE){ view =View.inflate(context,R.layout.item_pull_img,null); return new RightImageHolder(view); } return null; } //加载数据 @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { try { JSONObject jsonObject = data.getJSONObject(position); String title = jsonObject.getString("title"); Log.i("title",title);// for (int i = 0; i < image_list.length(); i++) {// url = image_list.getJSONObject(i).getString("url");// } if(holder instanceof PullImageHolder){ ((PullImageHolder) holder).textbiao.setText(title); }else if(holder instanceof RightImageHolder){ ((RightImageHolder) holder).texttu.setText(title); Picasso.with(context).load(image_list.getJSONObject(0).getString("url")).placeholder(R.mipmap.ic_launcher).into(((RightImageHolder) holder).imageView1); Picasso.with(context).load(image_list.getJSONObject(1).getString("url")).placeholder(R.mipmap.ic_launcher).into(((RightImageHolder) holder).imageView2); Picasso.with(context).load(image_list.getJSONObject(2).getString("url")).placeholder(R.mipmap.ic_launcher).into(((RightImageHolder) holder).imageView3); } } catch (JSONException e) { e.printStackTrace(); } } //数量 @Override public int getItemCount() { return data.length(); } //根据条件返回条目的类型 @Override public int getItemViewType(int position) { try { JSONObject jsonObject = data.getJSONObject(position); image_list = jsonObject.getJSONArray("image_list"); if(image_list.length()==0){ return TYPE_PULL_IMAGE; }else if (image_list.length()==3){ return TYPE_RIGHT_IMAGE; } } catch (JSONException e) { e.printStackTrace(); } return TYPE_PULL_IMAGE; } /** * 创建二种ViewHolder */ private class PullImageHolder extends RecyclerView.ViewHolder { private TextView textbiao; public PullImageHolder(View itemView) { super(itemView); textbiao = itemView.findViewById(R.id.textbiao); } } private class RightImageHolder extends RecyclerView.ViewHolder { private TextView texttu; private ImageView imageView1; private ImageView imageView2; private ImageView imageView3; public RightImageHolder(View itemView) { super(itemView); texttu = itemView.findViewById(R.id.texttu); imageView1 = itemView.findViewById(R.id.imageView1); imageView2 = itemView.findViewById(R.id.imageView2); imageView3 = itemView.findViewById(R.id.imageView3); } }}
3.写布局item_pull_img
<?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"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <ImageView android:id="@+id/imageView1" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:src="@mipmap/ic_launcher"/> <ImageView android:id="@+id/imageView2" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:src="@mipmap/ic_launcher"/> <ImageView android:id="@+id/imageView3" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:src="@mipmap/ic_launcher"/> </LinearLayout> <TextView android:id="@+id/texttu" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20dp" android:text="标题"/></LinearLayout>
写布局item_right_img
<?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"> <TextView android:id="@+id/textbiao" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20dp" android:text="展示标题"/></LinearLayout>
4.Acitvity的代码
import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.GridLayoutManager;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.support.v7.widget.StaggeredGridLayoutManager;import android.util.Log;import android.view.View;import com.comm.text.R;import com.comm.text.adapter.Recycler_variety_Adapter;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import java.io.IOException;import okhttp3.Call;import okhttp3.Callback;import okhttp3.Response;import text.bwie.com.okhttpclient.util.OkHttp3Utils;public class MainActivity extends AppCompatActivity { private RecyclerView recyclerView; private String path="http://ic.snssdk.com/2/article/v25/stream/?count=20&min_behot_time=1455521444&bd_city=%E5%8C%97%E4%BA%AC%E5%B8%82&bd_latitude=40.049317&bd_longitude=116.296499&bd_loc_time=1455521401&loc_mode=5&lac=4527&cid=28883&iid=3642583580&device_id=11131669133&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=SCH-I919U&os_api=19&os_version=4.4.2&uuid=285592931621751&openudid=AC9E172CE2490000"; private JSONObject jsonObject= null; private Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); if(msg.what==0){ String json = (String) msg.obj; Log.i("json",json); try { jsonObject = new JSONObject(json); JSONArray data = jsonObject.getJSONArray("data"); Recycler_variety_Adapter adapter=new Recycler_variety_Adapter(MainActivity.this,data); recyclerView.setAdapter(adapter); } catch (JSONException e) { e.printStackTrace(); } } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); isitView();//初始化控件 getData(path);//网络请求数据 /** * 通过这三种方法进行三种不同的样式的显示 */ //设置LinearLayoutManager布局管理器 LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); //设置GridLayoutManager布局管理器 GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 2); //设置StaggeredGridLayoutManager布局管理器 StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL); //把布局管理器给RecyclerView recyclerView.setLayoutManager(linearLayoutManager); } //初始化控件 private void isitView() { recyclerView = (RecyclerView) findViewById(R.id.recycle); } //网络请求数据 public void getData(String url) { OkHttp3Utils.doGet(url, 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(); Message message=new Message(); message.obj=string; message.what=0; handler.sendMessage(message); } }); }}
阅读全文
0 0
- RecycleView多条目加载
- RecycleView多条目加载
- RecycleView多条目加载
- recycleview的多条目加载
- Recycleview实现多条目加载布局
- RecycleView加载不同条目
- RecycleView加载不同条目
- RecycleView实现多条目
- RecycleView的多条目
- recycleView 多条目加载 + 下拉刷新 +GridView 与 ListView 切换
- RecycleView 的多条目布局
- recycleview的多条目展示
- 如何避免RecycleView复杂多条目布局时的加载不流畅
- android RecycleView复杂多条目的布局
- ListView多条目加载
- ListView 多条目加载
- listview多条目加载
- ListView多条目加载
- Windows系统快捷键
- TopCoder SRM 548 1000分 dp+组合数
- C语言习题六
- Kotlin 下 的RxJava 多数据源处理
- 几个线程题目
- RecycleView多条目加载
- RealerView里
- 软工3——微信作业
- DbSqlMapper
- GDB调试
- 2016级算法第一次上机——C AlvinZH去图书馆
- Android IPC机制之Messenger的使用
- java语言实现简单的选择排序
- C++构造函数的执行顺序及析构函数的执行顺序-多种情况:普通继承、虚拟继承、类构造函数调用其它类的构造函数