//适配器
package com.example.myapplication.Adpter; 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.LinearLayout; import android.widget.TextView; import com.example.myapplication.ItemBean; import com.example.myapplication.R; import java.util.List; /** * Created by 杨杰 on 2017/10/30. */ public class MyAdpter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{ private Context context; private List<ItemBean> list; private OnItemListener onItemlistener; public void setonItemlistener(OnItemListener onItemlistener) { this.onItemlistener = onItemlistener; } public interface OnItemListener{ public void onItemclick(int position); public void onItemLongclick(int position); } public MyAdpter(Context context, List<ItemBean> list) { this.context = context; this.list = list; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.item, parent, false); TypelViewholder typelViewholder = new TypelViewholder(view); return typelViewholder; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) { ItemBean itemBean = list.get(position); final TypelViewholder typeviewholder= (TypelViewholder) holder; typeviewholder.tvName.setText(itemBean.getName()); typeviewholder.tvAge.setText(itemBean.getAge()); //适配器里面条目点击事件 typeviewholder.ll.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //Toast.makeText(context,"年龄:"+typeviewholder.tvAge.getText()+"姓名:"+typeviewholder.tvName.getText(),Toast.LENGTH_LONG).show(); if (onItemlistener!=null){ onItemlistener.onItemclick(position); } } }); typeviewholder.ll.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { if (onItemlistener!=null){ onItemlistener.onItemclick(position); } return true; } }); } @Override public int getItemCount() { return list.size(); } //类似于ViewHolder private class TypelViewholder extends RecyclerView.ViewHolder { private final TextView tvAge; private final TextView tvName; private final LinearLayout ll; public TypelViewholder(View itemView) { super(itemView); tvAge = itemView.findViewById(R.id.tv_age); tvName = itemView.findViewById(R.id.tv_name); ll = itemView.findViewById(R.id.ll); } } }
//ItemBean
package com.example.myapplication; /** * Created by 杨杰 on 2017/10/30. */ public class ItemBean { private String name; private String age; public ItemBean(String name, String age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } }
//MainActivity
package com.example.myapplication; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.DividerItemDecoration; 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.view.View; import android.widget.Button; import android.widget.Toast; import com.example.myapplication.Adpter.MyAdpter; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private RecyclerView mRv; private List<ItemBean> list = new ArrayList<>(); /** * 垂直 */ private Button mBt1; /** * 网格 */ private Button mBt2; /** * 瀑布流 */ private Button mBt3; private ItemBean itemBean; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { mRv = (RecyclerView) findViewById(R.id.rv); //设置布局管理器 mRv.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, true)); //分割线 mRv.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL)); /* 正着滑 mRv.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,true)); 倒着滑 mRv.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false)); */ for (int i = 0; i < 100; i++) { itemBean = new ItemBean("李白" + i, "100" + i); list.add(itemBean); } MyAdpter myAdpter = new MyAdpter(this, list); //条目点击事件 myAdpter.setonItemlistener(new MyAdpter.OnItemListener() { @Override public void onItemclick(int position) { Toast.makeText(MainActivity.this,"点击了",Toast.LENGTH_LONG).show(); } @Override public void onItemLongclick(int position) { } }); mRv.setAdapter(myAdpter); mBt1 = (Button) findViewById(R.id.bt1); mBt1.setOnClickListener(this); mBt2 = (Button) findViewById(R.id.bt2); mBt2.setOnClickListener(this); mBt3 = (Button) findViewById(R.id.bt3); mBt3.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.bt1: //设置布局管理器 mRv.setLayoutManager(new LinearLayoutManager(this)); break; case R.id.bt2: //网格 mRv.setLayoutManager(new GridLayoutManager(this, 2)); break; case R.id.bt3: //瀑布 mRv.setLayoutManager(new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL)); break; } } }
//activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:orientation="vertical" 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="com.example.myapplication.MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/bt1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="垂直"/> <Button android:id="@+id/bt2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="网格"/> <Button android:id="@+id/bt3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="瀑布流"/> </LinearLayout> <android.support.v7.widget.RecyclerView android:id="@+id/rv" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout>
//item.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="horizontal" android:id="@+id/ll"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/ic_launcher" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:id="@+id/tv_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20dp" /> <TextView android:id="@+id/tv_age" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20dp" /> </LinearLayout> </LinearLayout>