1:布局
<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" android:orientation="vertical" tools:context="com.example.yuekao_demo2.SecondActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="60dp" android:orientation="horizontal" android:layout_marginTop="5dp" > <TextView android:id="@+id/back" android:layout_width="40dp" android:layout_height="55dp" android:text="返回" android:textSize="20dp" android:layout_marginLeft="15dp" /> <EditText android:id="@+id/search_button" android:layout_width="390dp" android:layout_height="wrap_content" android:hint="面膜" android:background="@drawable/search_shape" android:layout_marginLeft="5dp" /> </LinearLayout> <com.jcodecraeer.xrecyclerview.XRecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="wrap_content"> </com.jcodecraeer.xrecyclerview.XRecyclerView> </LinearLayout>
2:SecondActivity
public class SecondActivity extends AppCompatActivity implements IPhoneView{ //注入P层 IPhonePresenter presenter; private XRecyclerView recyclerView; private PhoneAdapter adapter; private EditText editText1; private int page=1; String name; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); presenter=new PhonePresenter(this); presenter.getList(); //初始化视图 initView(); //获取网络请求数据 getData(page); recyclerView.setPullRefreshEnabled(true); recyclerView.setLoadingMoreEnabled(true); recyclerView.setLoadingListener(new XRecyclerView.LoadingListener() { @Override public void onRefresh() { page=1; getData(page); } @Override public void onLoadMore() { page++; getData(page); } }); } private void getData(int page) { OK.getOk().doGet("http://www.zhaoapi.cn/product/searchProducts?keywords="+name+"&page="+page+"&sort=0", new OkCallback() { @Override public void onUI(String json) { Gson gson=new Gson(); RootData rootData = gson.fromJson(json, RootData.class); adapter.addData(rootData.data); recyclerView.loadMoreComplete(); recyclerView.refreshComplete(); } @Override public void onFailed(String json) { } }); } private void initView() { //获取资源ID recyclerView=findViewById(R.id.recycler_view); editText1=findViewById(R.id.search_button); //布局管理器 LinearLayoutManager manager=new LinearLayoutManager(this); recyclerView.setLayoutManager(manager); //分割线 recyclerView.addItemDecoration(new DividerItemDecoration(this, OrientationHelper.VERTICAL)); adapter=new PhoneAdapter(this); recyclerView.setAdapter(adapter); adapter.setListener(new PhoneAdapter.PhoneItemClickListener() { @Override public void onItemClick(Phone phone, int position) { Toast.makeText(SecondActivity.this,"您点击了"+position+"行",Toast.LENGTH_SHORT).show(); Intent intent=new Intent(SecondActivity.this,ThirdActivity.class); String images = phone.images; String pid = phone.pid; String title = phone.title; //传值 intent.putExtra("pid",pid); intent.putExtra("images",images); intent.putExtra("title",title); startActivity(intent); } }); //接收传过来的值 Intent intent=getIntent(); Bundle extras = intent.getExtras(); name = extras.getString("name"); editText1.setText(name); } @Override public void showData(List<Phone> phones) { adapter.addData(phones); }
3:适配器
public class PhoneAdapter extends RecyclerView.Adapter<PhoneAdapter.MyViewHolder> { private Context context; private List<Phone> list; public PhoneAdapter(Context context) { this.context = context; list=new ArrayList<>(); } public void addData(List<Phone> phones) { this.list.addAll(phones); //刷新数据 notifyDataSetChanged(); } @NonNull @Override public PhoneAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view= LayoutInflater.from(context).inflate(R.layout.recycle_view_layout,parent,false); return new MyViewHolder(view); } @Override public void onBindViewHolder(@NonNull PhoneAdapter.MyViewHolder holder, final int position) { final Phone phone=list.get(position); holder.name.setText(phone.title); holder.price.setText(phone.bargainPrice); /* holder.image.setImageResource(R.drawable.ic_launcher_background);*/ String images = list.get(position).images; String s= images.split("\\|")[0]; Glide.with(context).load(s).into(holder.image); //recyclerview的条目加载事件 holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(listener!=null){ listener.onItemClick(phone,position); } } }); } @Override public int getItemCount() { return list.size(); } public class MyViewHolder extends RecyclerView.ViewHolder { ImageView image; TextView name,price; public MyViewHolder(View itemView) { super(itemView); image=itemView.findViewById(R.id.image); name=itemView.findViewById(R.id.name); price=itemView.findViewById(R.id.price); } } private PhoneItemClickListener listener; //接口 public interface PhoneItemClickListener { void onItemClick(Phone phone,int position); } public void setListener(PhoneItemClickListener listener) { this.listener = listener; } }