解析 RecyclerView多布局
来源:互联网 发布:手机锁帧软件 编辑:程序博客网 时间:2024/06/06 00:07
package com.example.myrecyclerviewduobuju;import android.content.Intent;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import com.example.myrecyclerviewduobuju.adapter.MyRecycAdapter;import com.example.myrecyclerviewduobuju.bean.User;import com.google.gson.Gson;import com.google.gson.reflect.TypeToken;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.lang.reflect.Type;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;import java.util.List;public class MainActivity extends AppCompatActivity { private RecyclerView recyc; private String pag = "http://172.16.45.8/test/array2.txt"; private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (msg.what == 44) { String obj = (String) msg.obj; Gson gson = new Gson(); Type type = new TypeToken<List<User>>() { }.getType(); been = gson.fromJson(obj, type); LinearLayoutManager manager = new LinearLayoutManager(MainActivity.this, LinearLayoutManager.VERTICAL, false); recyc.setLayoutManager(manager); adapter = new MyRecycAdapter(been, MainActivity.this); recyc.setAdapter(adapter); initListener(); } } }; private List<User> been; private MyRecycAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initData(); } private void initListener() { adapter.setOnClickListener(new MyRecycAdapter.OnClickListener() { @Override public void onClick(int pos) { Intent intent = new Intent(MainActivity.this,UrlActivity.class); intent.putExtra("url",been.get(pos).getUrl()); startActivity(intent); } }); } private void initData() { new Thread(new Runnable() { @Override public void run() { try { URL url = new URL(pag); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); if (conn.getResponseCode() == 200) { InputStream stream = conn.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); String string = ""; StringBuffer sb = new StringBuffer(); while ((string = reader.readLine()) != null) { sb.append(string); } handler.obtainMessage(44, sb.toString()).sendToTarget(); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }).start(); } private void initView() { recyc = (RecyclerView) findViewById(R.id.recyc); }}
package com.example.myrecyclerviewduobuju.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.widget.ImageView;import android.widget.TextView;import com.example.myrecyclerviewduobuju.R;import com.example.myrecyclerviewduobuju.bean.User;import com.squareup.picasso.Picasso;import java.util.List;/** * Created by 鬼鬼 on 2017/12/18. */public class MyRecycAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private List<User> been; private Context context; private RecyclerView.ViewHolder holder = null; private OnClickListener listener; public MyRecycAdapter(List<User> been, Context context) { this.been = been; this.context = context; } @Override public int getItemViewType(int position) { return been.get(position).getType(); } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { switch (viewType) { case 0: View view = LayoutInflater.from(context).inflate(R.layout.item_one, parent, false); holder = new One(view); break; case 1: View view1 = LayoutInflater.from(context).inflate(R.layout.item_tow, parent, false); holder = new Tow(view1); break; } return holder; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) { User user = been.get(position); int type = user.getType(); List<User.PicBean> pic = user.getPic(); switch (type){ case 0: Picasso.with(context).load(pic.get(0).getThumbnail_pic()).into(((One)holder).pic1); Picasso.with(context).load(pic.get(1).getThumbnail_pic()).into(((One)holder).pic2); Picasso.with(context).load(pic.get(2).getThumbnail_pic()).into(((One)holder).pic3); ((One)holder).name.setText(been.get(position).getTitle()); ((One)holder).title.setText(been.get(position).getCategory()); ((One)holder).data.setText(been.get(position).getAuthor_name()); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { listener.onClick(position); } }); break; case 1: Picasso.with(context).load(pic.get(0).getThumbnail_pic()).into(((Tow)holder).pic); ((Tow)holder).name.setText(been.get(position).getTitle()); ((Tow)holder).title.setText(been.get(position).getCategory()); ((Tow)holder).data.setText(been.get(position).getAuthor_name()); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { listener.onClick(position); } }); break; } } @Override public int getItemCount() { return been.size(); } class One extends RecyclerView.ViewHolder { private final TextView name; private final ImageView pic1; private final ImageView pic2; private final ImageView pic3; private final TextView title; private final TextView data; public One(View itemView) { super(itemView); name = itemView.findViewById(R.id.name); pic1 = itemView.findViewById(R.id.pic1); pic2 = itemView.findViewById(R.id.pic2); pic3 = itemView.findViewById(R.id.pic3); title = itemView.findViewById(R.id.title); data = itemView.findViewById(R.id.data); } } class Tow extends RecyclerView.ViewHolder { private final TextView name; private final ImageView pic; private final TextView title; private final TextView data; public Tow(View itemView) { super(itemView); name = itemView.findViewById(R.id.name); pic = itemView.findViewById(R.id.pic); title = itemView.findViewById(R.id.title); data = itemView.findViewById(R.id.data); } } public interface OnClickListener{ void onClick(int pos); } public void setOnClickListener(OnClickListener listener){ this.listener=listener; }}
阅读全文
0 0
- 解析 RecyclerView多布局
- RecyclerView实现多布局
- RecyclerView的多布局
- 实现RecyclerView多布局
- RecyclerView多布局实现
- Android recyclerView 多布局
- RecyclerView 多布局问题
- RecyclerView 多布局使用
- RecyclerView多布局实现
- RecyclerView多布局加载
- recyclerview 多布局
- RecyclerView多布局
- recyclerView多布局
- RecyclerView多布局适配器
- recyclerView多条目布局
- listview和recyclerview多布局
- RecyclerView多布局展示示例
- RecyclerView布局
- 我,一个菜鸟的第一篇博客
- 二维码扫描
- python——后起之秀
- vue引入JQ的方法
- 简易统计Python有效代码行数
- 解析 RecyclerView多布局
- 给prometheus加一个export
- 分割大头文件并压缩打包shell脚本
- codeforces 148A Insomnia cure
- 调用相册相机
- 104,101规约中的短浮点数
- 分类实现
- leetCode-Search in Rotated Sorted Array
- dict方法总结