package com.example.myshopcart.view.activity; import android.content.Intent; import android.graphics.Color; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.View; import android.widget.Toast; import com.example.myshopcart.R; import com.example.myshopcart.model.bean.ListBeans; import com.example.myshopcart.model.bean.ShopBeans; import com.example.myshopcart.presenter.MainPresenter; import com.example.myshopcart.view.adapter.RcyAdapter; import com.example.myshopcart.view.interfaces.IMainView; import com.google.gson.Gson; import java.io.Serializable; import java.util.ArrayList; import java.util.List; public class MainActivity extends BaseActivity<MainPresenter> implements IMainView, SwipeRefreshLayout.OnRefreshListener, RcyAdapter.setOnItemClickListener { private List<ListBeans.MiaoshaBean.ListBeanX> beanXList = new ArrayList<>(); private RecyclerView mMainRcy; private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (msg.what == 0) { String s = (String) msg.obj; //解析 ListBeans listBeans = new Gson().fromJson(s, ListBeans.class); List<ListBeans.MiaoshaBean.ListBeanX> list = listBeans.getMiaosha().getList(); // Log.e("my", list.get(0).getSubhead()); beanXList.addAll(list); //设置适配器 rcyAdapter = new RcyAdapter(MainActivity.this, beanXList); mMainRcy.setAdapter(rcyAdapter); //刷新适配器 rcyAdapter.notifyDataSetChanged(); //接口调用 setClick(); } } }; private void setClick() { rcyAdapter.setMonItemClickListener(this); } private RcyAdapter rcyAdapter; private SwipeRefreshLayout main_swipe; private LinearLayoutManager linearLayoutManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override protected void initView() { mMainRcy = (RecyclerView) findViewById(R.id.main_rcy); main_swipe = (SwipeRefreshLayout) findViewById(R.id.main_swipe); //布局管理器 linearLayoutManager = new LinearLayoutManager(MainActivity.this, LinearLayoutManager.VERTICAL, false); mMainRcy.setLayoutManager(linearLayoutManager); } @Override protected void initData() { loadDataServer(); //设置颜色 main_swipe.setColorSchemeColors(Color.RED, Color.BLUE); //main_swipe监听 main_swipe.setOnRefreshListener(this); //rcy上啦加载更多监听 mMainRcy.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); } @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); //可见的条目数 int childCount = mMainRcy.getChildCount(); int itemCount = linearLayoutManager.getItemCount();//总条目数 int firstVisibleItemPosition = linearLayoutManager.findFirstVisibleItemPosition(); if (firstVisibleItemPosition + childCount == itemCount) { loadDataServer(); rcyAdapter.notifyDataSetChanged(); } } }); } private void loadDataServer() { String path = "https://www.zhaoapi.cn/ad/getAd"; basePresenter.loadData(path); } @Override MainPresenter setPresenter() { return new MainPresenter(); } @Override protected int setLayout() { return R.layout.activity_main; } @Override public void onSuccess(String s) { Message msg = Message.obtain(); msg.obj = s; msg.what = 0; handler.sendMessage(msg); } @Override protected void onDestroy() { super.onDestroy(); basePresenter.deachView(); } @Override public void onRefresh() { //延时刷新 new Handler().postDelayed(new Runnable() { @Override public void run() { //停止刷新 main_swipe.setRefreshing(false); } }, 2000); } @Override public void onItemClick(int position) { Toast.makeText(MainActivity.this, "" + position, Toast.LENGTH_LONG).show(); Intent intent = new Intent(MainActivity.this, XiangQingActivity.class); String images = beanXList.get(position).getImages(); String subhead = beanXList.get(position).getSubhead(); double price = beanXList.get(position).getPrice(); ShopBeans shopBeans = new ShopBeans(images, subhead, price); Bundle bundle = new Bundle(); bundle.putSerializable("shopBeans", shopBeans); intent.putExtra("bundle", bundle); startActivity(intent); } }
<?xml version="1.0" encoding="utf-8"?> <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" tools:context=".view.activity.MainActivity"> <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/main_swipe" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/main_rcy" android:layout_width="match_parent" android:layout_height="match_parent"></android.support.v7.widget.RecyclerView> </android.support.v4.widget.SwipeRefreshLayout> </LinearLayout>
package com.example.myshopcart.view.adapter; import android.content.Context; import android.os.Handler; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.bumptech.glide.Glide; import com.example.myshopcart.R; import com.example.myshopcart.model.bean.ListBeans; import java.util.List; public class RcyAdapter extends RecyclerView.Adapter implements View.OnClickListener { private Context context; private List<ListBeans.MiaoshaBean.ListBeanX> list; public RcyAdapter(Context context, List<ListBeans.MiaoshaBean.ListBeanX> list) { this.context = context; this.list = list; } @NonNull @Override public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = View.inflate(context, R.layout.recy_layout, null); //为每个item添加点击事件 view.setOnClickListener(this); return new MyViewHolder(view); } @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { MyViewHolder viewHolder = (MyViewHolder) holder; viewHolder.rcy_text.setText(list.get(position).getSubhead()); viewHolder.rcy_price.setText(list.get(position).getPrice() + ""); String[] temp = null; temp = (list.get(position).getImages()).split("\\|"); Glide.with(context).load(temp[0]).into(viewHolder.rcy_img); //条目点击 viewHolder.itemView.setTag(position); } @Override public int getItemCount() { return list.size(); } //点击事件 @Override public void onClick(View v) { if (monItemClickListener != null) { monItemClickListener.onItemClick((Integer) v.getTag()); } } private class MyViewHolder extends RecyclerView.ViewHolder { private ImageView rcy_img; private TextView rcy_text; private TextView rcy_price; public MyViewHolder(View itemView) { super(itemView); rcy_img = itemView.findViewById(R.id.rcy_img); rcy_text = itemView.findViewById(R.id.rcy_text); rcy_price = itemView.findViewById(R.id.rcy_price); } } //声明变量 private setOnItemClickListener monItemClickListener; //接口回调 public interface setOnItemClickListener { void onItemClick(int position); } //set方法 public void setMonItemClickListener(setOnItemClickListener monItemClickListener) { this.monItemClickListener = monItemClickListener; } }