在build.gradle配置RecyclerView的库
选择的是26的,我的sdk是25.3.1,所以需要一块改成25.3.1,需要把-alpha1去掉,再重新编译就OK了
public class RecyclerViewActivity extends Activity implements View.OnClickListener { private Button btn_add; private Button btn_delete; private Button btn_list; private Button btn_grid; private Button btn_flow; private RecyclerView recyclerview; private TextView tv_title; private ArrayList<String> datas; private MyRecyclerViewAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); initView(); initData(); //设置RecyclerView的适配器 adapter = new MyRecyclerViewAdapter(RecyclerViewActivity.this,datas); recyclerview.setAdapter(adapter); //LayoutManager,第三个参数表示是false正序,true逆序 recyclerview.setLayoutManager(new LinearLayoutManager(RecyclerViewActivity.this, LinearLayoutManager.VERTICAL, false)); // recyclerview.scrollToPosition(datas.size()-1); //添加RecyclerView的分割线 recyclerview.addItemDecoration(new DividerListItemDecoration(RecyclerViewActivity.this,DividerListItemDecoration.VERTICAL_LIST)); //设置点击某条的监听,自己实现需要的函数行为 adapter.setOnItemClickListener(new MyRecyclerViewAdapter.OnItemClickListener() { @Override public void onItemClick(View view, String data) { Toast.makeText(RecyclerViewActivity.this, "data=="+data, Toast.LENGTH_SHORT).show(); } }); //设置动画 recyclerview.setItemAnimator(new DefaultItemAnimator()); } private void initData() { datas = new ArrayList<>(); //准备数据集合 for (int i=0;i<100;i++){ datas.add("Content_"+i); } } private void initView() { setContentView(R.layout.activity_recyclerview); btn_add = (Button) findViewById(R.id.btn_add); btn_delete = (Button) findViewById(R.id.btn_delete); btn_list = (Button) findViewById(R.id.btn_list); btn_grid = (Button) findViewById(R.id.btn_grid); btn_flow = (Button) findViewById(R.id.btn_flow); recyclerview = (RecyclerView) findViewById(R.id.recyclerview); tv_title = (TextView) findViewById(R.id.tv_title); tv_title.setText("RecyclerView"); //设置点击事件 btn_add.setOnClickListener(this); btn_delete.setOnClickListener(this); btn_list.setOnClickListener(this); btn_grid.setOnClickListener(this); btn_flow.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.btn_add: adapter.addData(0,"New_Content"); recyclerview.scrollToPosition(0); break; case R.id.btn_delete: adapter.removeData(0); break; case R.id.btn_list: //设置List类型效果 recyclerview.setLayoutManager(new LinearLayoutManager(RecyclerViewActivity.this,LinearLayoutManager.VERTICAL,false)); break; case R.id.btn_grid: //设置Grid类型效果 recyclerview.setLayoutManager(new GridLayoutManager(RecyclerViewActivity.this, 2, GridLayoutManager.VERTICAL, false)); // recyclerview.scrollToPosition(99); break; case R.id.btn_flow: //设置瀑布流类型效果 recyclerview.setLayoutManager(new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL)); break; } } }
public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.ViewHolder> { private final Context context; private ArrayList<String> datas; public MyRecyclerViewAdapter(Context context, ArrayList<String> datas) { this.context = context; this.datas = datas; } /*******************设置viewholder,以及绑定数据start***************************/ /** * 相当于于getView方法中创建View和ViewHolder * @param parent * @param viewType * @return */ @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View itemView = View.inflate(context, R.layout.item_recyclerview,null); return new ViewHolder(itemView); } /**相当于于getView绑定数据部分的代码 * 数据和View绑定 * @param holder * @param position */ @Override public void onBindViewHolder(ViewHolder holder, int position) { //根据位置得到对应的数据 String data = datas.get(position); holder.tv_title.setText(data); } /** * 得到总条数 * @return */ @Override public int getItemCount() { return datas.size(); } class ViewHolder extends RecyclerView.ViewHolder { private ImageView iv_icon; private TextView tv_title; public ViewHolder(View itemView) { super(itemView); iv_icon = (ImageView) itemView.findViewById(R.id.iv_icon); tv_title = (TextView) itemView.findViewById(R.id.tv_title); itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Toast.makeText(context, "data=="+datas.get(getLayoutPosition()), Toast.LENGTH_SHORT).show(); //设置点击事件方法1,设置点击接口 if(onItemClickListener != null){ onItemClickListener.onItemClick(v,datas.get(getLayoutPosition())); } } }); //设置点击事件方然2,直接复写回调函数 iv_icon.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(context, "我是图片=="+getLayoutPosition(), Toast.LENGTH_SHORT).show(); } }); } } /*******************设置viewholder,以及绑定数据end***************************/ /*******************点击事件方法1自定义接口start***************************/ /** * 点击RecyclerView某条的监听 */ public interface OnItemClickListener{ /** * 当RecyclerView某个被点击的时候回调 * @param view 点击item的视图 * @param data 点击得到的数据 */ public void onItemClick(View view,String data); } private OnItemClickListener onItemClickListener; /** * 设置RecyclerView某个的监听 * @param onItemClickListener */ public void setOnItemClickListener(OnItemClickListener onItemClickListener) { this.onItemClickListener = onItemClickListener; } /*******************点击事件方法1自定义接口end***************************/ /** * 添加数据 * @param position * @param data */ public void addData(int position, String data) { datas.add(position,data); //刷新适配器 notifyItemInserted(position); } /** * 移除数据 * @param position */ public void removeData(int position) { datas.remove(position); //刷新适配器 notifyItemRemoved(position); } }
自定义分割线样式
divider_bg <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <gradient android:centerColor="#ff00ff00" android:endColor="#ff0000ff" android:startColor="#ffff0000" android:type="linear" /> <size android:height="2dp"/> </shape>