必要的权限:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
依赖
compile 'com.android.support:recyclerview-v7:26.1.0' compile 'com.squareup.okhttp3:okhttp:3.9.0' compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' implementation 'com.google.code.gson:gson:2.2.4'
效果图:
Activity代码:
public class MainActivity extends AppCompatActivity { private MainPresenter mainPresenter; private RecyclerView rcv; private MyAdapter adapter; @SuppressLint("HandlerLeak") private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (msg.what == 1) { final List<RecyclBean.DataBean> data = (List<RecyclBean.DataBean>) msg.obj; LinearLayoutManager linearLayoutManager = new LinearLayoutManager(MainActivity.this); rcv.setLayoutManager(linearLayoutManager); //网格式 // rcv.setLayoutManager(new GridLayoutManager(MainActivity.this,3)); //瀑布流 // rcv.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL)); adapter = new MyAdapter(data, MainActivity.this); rcv.setAdapter(adapter); //点击事件 adapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() { @Override public void onClick(int position, View view) { ObjectAnimator alpha = ObjectAnimator.ofFloat(view, "alpha", 1f, 1f, 0f, 1f); alpha.setDuration(2000); alpha.start(); } @Override public void onLongClick(int position) { Toast.makeText(MainActivity.this, "您长按删除了" + (position + 1) + "行", Toast.LENGTH_SHORT).show(); data.remove(position); adapter.notifyDataSetChanged(); } }); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initData(); } //初始化RecyclerView控件 private void initView() { rcv = (RecyclerView) findViewById(R.id.rcv); } //获取数据 private void initData() { mainPresenter = new MainPresenter(); mainPresenter.getData(new IMainView() { @Override public void OnSuccess(List<RecyclBean.DataBean> data) { Log.e("TAG", "OnSuccess: " + data.get(1).getTITLE()); Message msg = new Message(); msg.what = 1; msg.obj = data; handler.sendMessage(msg); } }); } }
RecyclerView的Adapter代码:
/** * author:Created by WeiWeiFeng on 2018/4/27. */ public class MyAdapter extends RecyclerView.Adapter { public static final int TYPE_RIGHT_IMAGE = 0; public static final int TYPE_THREE_IMAGE = 1; private Context context; private OnItemClickListener mOnItemClickListener; private List<RecyclBean.DataBean> list; public MyAdapter(List<RecyclBean.DataBean> list, Context context) { this.list = list; this.context = context; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view; //根据不同的itemType创建不同的布局 if (viewType == TYPE_RIGHT_IMAGE) { view = View.inflate(context, R.layout.right_image, null); return new RIGHTIMAGEHolder(view); } else { view = View.inflate(context, R.layout.three_image, null); return new THREEIMAGEHolder(view); } } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) { int itemViewType = holder.getItemViewType(); switch (itemViewType) { case 0: final RIGHTIMAGEHolder holder1 = (RIGHTIMAGEHolder) holder; holder1.tv_right.setText(list.get(position).getTITLE()); ImageLoader.getInstance().displayImage(list.get(2).getIMAGEURL(), holder1.iv_right); if (mOnItemClickListener != null) { holder1.iv_right.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mOnItemClickListener.onClick(position, holder1.iv_right); } }); holder1.itemView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { mOnItemClickListener.onLongClick(position); return true; } }); } break; default: final THREEIMAGEHolder holder2 = (THREEIMAGEHolder) holder; holder2.tv_three.setText(list.get(position).getTITLE()); ImageLoader.getInstance().displayImage(list.get(position).getIMAGEURL(), holder2.iv_t1); ImageLoader.getInstance().displayImage(list.get(position).getIMAGEURL(), holder2.iv_t2); ImageLoader.getInstance().displayImage(list.get(position).getIMAGEURL(), holder2.iv_t3); if (mOnItemClickListener != null) { holder2.iv_t1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mOnItemClickListener.onClick(position, holder2.iv_t1); } }); holder2.iv_t2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mOnItemClickListener.onClick(position, holder2.iv_t2); } }); holder2.iv_t3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mOnItemClickListener.onClick(position, holder2.iv_t3); } }); holder2.itemView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { mOnItemClickListener.onLongClick(position); return false; } }); } break; } } //点击接口 public interface OnItemClickListener { void onClick(int position, View view); void onLongClick(int position); } public void setOnItemClickListener(OnItemClickListener onItemClickListener) { this.mOnItemClickListener = onItemClickListener; } //item的数量 @Override public int getItemCount() { if (list != null) { return list.size(); } return 0; } @Override public int getItemViewType(int position) { if (position % 3 == 0) { return TYPE_RIGHT_IMAGE; } else { return TYPE_THREE_IMAGE; } } //创建ViewHolder public class RIGHTIMAGEHolder extends RecyclerView.ViewHolder { private final TextView tv_right; private final ImageView iv_right; public RIGHTIMAGEHolder(View itemView) { super(itemView); tv_right = itemView.findViewById(R.id.tv_right); iv_right = itemView.findViewById(R.id.iv_right); } } public class THREEIMAGEHolder extends RecyclerView.ViewHolder { private final TextView tv_three; private final ImageView iv_t1; private final ImageView iv_t2; private final ImageView iv_t3; public THREEIMAGEHolder(View itemView) { super(itemView); tv_three = itemView.findViewById(R.id.tv_three); iv_t1 = itemView.findViewById(R.id.iv_t1); iv_t2 = itemView.findViewById(R.id.iv_t2); iv_t3 = itemView.findViewById(R.id.iv_t3); } } }
布局去这里看
https://blog.csdn.net/qq_35353487/article/details/74336019