1.添加依賴
compile 'com.android.support:recyclerview-v7:25.0.0'
2.佈局
activity_main.xml
<android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent" />layout_item.xml
<TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="李白" />3.代碼
MainActivity
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.Toast; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private RecyclerView recyclerView; private List<String> list = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); recyclerView = (RecyclerView) findViewById(R.id.recyclerView); for (int i = 0;i<20;i++){ list.add("條目展示:"+i); } //管理器 LinearLayoutManager manager = new LinearLayoutManager(MainActivity.this); recyclerView.setLayoutManager(manager); MyAdapter myAdapter = new MyAdapter(MainActivity.this, list); recyclerView.setAdapter(myAdapter); myAdapter.setonItemonclier(new MyAdapter.OnitemOnclickLister() { @Override public void onItemClicker(View view, int po) { Toast.makeText(MainActivity.this, "我被點擊啦"+po, Toast.LENGTH_SHORT).show(); } }); myAdapter.setonLongitemclicer(new MyAdapter.OnLongItemOnClickLister() { @Override public void onlongClicker(View view, int po) { Toast.makeText(MainActivity.this, "我被常按點擊啦"+po, Toast.LENGTH_SHORT).show(); } }); } }
MyAdapter
import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import java.util.List; public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> { private Context context; private List<String> list; public OnitemOnclickLister lister; public OnLongItemOnClickLister longItemOnClickLister; //定義接口 public interface OnitemOnclickLister { void onItemClicker(View view, int po); } public interface OnLongItemOnClickLister { void onlongClicker(View view, int po); } public MyAdapter(Context context, List<String> list) { this.context = context; this.list = list; } public void setonItemonclier(OnitemOnclickLister lister) { this.lister = lister; } public void setonLongitemclicer(OnLongItemOnClickLister longItemOnClickLister) { this.longItemOnClickLister = longItemOnClickLister; } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = View.inflate(context, R.layout.layout_item, null); final MyViewHolder myViewHolder = new MyViewHolder(view); view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int position = myViewHolder.getLayoutPosition(); if (lister != null){ lister.onItemClicker(v, position); } } }); view.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { int position = myViewHolder.getLayoutPosition(); if (longItemOnClickLister != null){ longItemOnClickLister.onlongClicker(v, position); } return true; } }); return myViewHolder; } @Override public void onBindViewHolder(MyViewHolder holder, int position) { holder.tv.setText(list.get(position)); } @Override public int getItemCount() { return list.size(); } public class MyViewHolder extends RecyclerView.ViewHolder { private final TextView tv; public MyViewHolder(View itemView) { super(itemView); tv = (TextView) itemView.findViewById(R.id.tv); } } }