Android+RecyclerView
来源:互联网 发布:生命安全教育网络测试 编辑:程序博客网 时间:2024/06/09 05:36
第一步:在build gradle中加依赖
compile 'com.android.support:recyclerview-v7:23.1.1'为防止报这个错java.lang.NoClassDefFoundError: android.support.v4.animation.AnimatorCompatHelper
添加
configurations.all { resolutionStrategy.eachDependency { DependencyResolveDetails details -> def requested = details.requested if (requested.group == 'com.android.support') { if (!requested.name.startsWith("multidex")) { details.useVersion '24.1.0' } } }}第二步:activity_main.xmlitem_layout.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="bawei.com.day.MainActivity"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:background="@color/colorPrimary" android:layout_height="?attr/actionBarSize" android:layout_width="match_parent" > </android.support.v7.widget.Toolbar> <android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/rv_list" /></LinearLayout>
<?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:orientation="vertical" android:layout_margin="8dp" android:background="@color/colorAccent" > <TextView android:id="@+id/tv_text" android:padding="20dp" android:textColor="#ffffff" android:layout_width="match_parent" android:layout_height="wrap_content"/></LinearLayout>res/menu/menu_main.xml
<?xml version="1.0" encoding="utf-8"?><menu 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" tools:context=".MainActivity"> <item android:id="@+id/menu_add" android:title="Add" android:orderInCategory="80" app:showAsAction="always" /> <item android:id="@+id/menu_del" android:title="Del" android:orderInCategory="80" app:showAsAction="always" /> <item android:id="@+id/menu_addmore" android:title="AddMore" android:orderInCategory="80" app:showAsAction="always" /> <item android:id="@+id/menu_move" android:title="Move" android:orderInCategory="80" app:showAsAction="always" /></menu>RecyclerViewAdapter.java
package bawei.com.day;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.TextView;import java.util.ArrayList;/** * Created by Administrator on 2017/10/12. */public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.MyViewHolder> {private LayoutInflater mLayoutInflater;private Context mContext;private ArrayList<String> mTitle=new ArrayList<>();public RecyclerViewAdapter(Context context,ArrayList<String>title){ mContext=context; mTitle=title; mLayoutInflater=LayoutInflater.from(context); }public static class MyViewHolder extends RecyclerView.ViewHolder{ TextView mTextView; public MyViewHolder(View itemView) { super(itemView); mTextView=(TextView)itemView.findViewById(R.id.tv_text); }} public void remove(int position) { mTitle.remove(position); notifyItemRemoved(position); } public void add(String text, int position) { mTitle.add(position, text); notifyItemInserted(position); } @Override public RecyclerViewAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { return new MyViewHolder(mLayoutInflater.inflate(R.layout.item_layout,parent,false)); } @Override public void onBindViewHolder(RecyclerViewAdapter.MyViewHolder holder, int position) { holder.mTextView.setText(mTitle.get(position)); } @Override public int getItemCount() { return mTitle==null ? 0 : mTitle.size(); }}MainActivity.java
package bawei.com.day;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.DefaultItemAnimator;import android.support.v7.widget.RecyclerView;import android.support.v7.widget.StaggeredGridLayoutManager;import android.support.v7.widget.Toolbar;import android.view.Menu;import android.view.MenuItem;import java.util.ArrayList;import java.util.Collections;public class MainActivity extends AppCompatActivity { private RecyclerView mRecyclerView; //item 显示所需 private String[] title = {"JAVA","C","C++","C#","PYTHON","PHP" ,".NET","JAVASCRIPT","RUBY","PERL","VB","OC","SWIFT" }; private ArrayList<String> mTitle=new ArrayList<>(); private RecyclerViewAdapter mRecyclerViewAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Toolbar Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); //去除Toolbar标题 getSupportActionBar().setDisplayShowTitleEnabled(false); //设置菜单点击监听 toolbar.setOnMenuItemClickListener(onMenuItemClick); mRecyclerView = (RecyclerView) findViewById(R.id.rv_list); //LinearLayoutManager layoutManager = new LinearLayoutManager(this); StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(4,StaggeredGridLayoutManager.VERTICAL); //LinearLayoutManager layoutManager = new GridLayoutManager(this,4); //LinearLayout layoutManager=new StaggeredGridLayoutManager(4,this); //layoutManager.setOrientation(LinearLayoutManager.VERTICAL); // layoutManager.setOrientation(GridLayoutManager.VERTICAL); //layoutManager.setOrientation(StaggeredGridLayoutManager.VERTICAL); mRecyclerView.setLayoutManager(layoutManager); Collections.addAll(mTitle,title); //为RecyclerView添加默认动画效果,测试不写也可以 mRecyclerView.setItemAnimator(new DefaultItemAnimator()); mRecyclerView.setAdapter(mRecyclerViewAdapter=new RecyclerViewAdapter(this, mTitle)); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); return super.onCreateOptionsMenu(menu); } private Toolbar.OnMenuItemClickListener onMenuItemClick = new Toolbar.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem menuItem) { switch (menuItem.getItemId()) { case R.id.menu_add: //添加模拟数据到第一项 mTitle.add(0, "www.lijizhou.com"); //RecyclerView列表进行UI数据更新 mRecyclerViewAdapter.notifyItemInserted(0); //如果在第一项添加模拟数据需要调用 scrollToPosition(0)把列表移动到顶端(可选) mRecyclerView.scrollToPosition(0); break; case R.id.menu_del: //删除模拟数据第一项 mTitle.remove(0); //RecyclerView 列表进行UI数据更新 mRecyclerViewAdapter.notifyItemRemoved(0); break; case R.id.menu_move: //列表中第二项移到第三项 进行UI数据更新 mRecyclerViewAdapter.notifyItemMoved(1,2); break; case R.id.menu_addmore: //模拟数据批量添加4条数据 mTitle.add(0,"test"); mTitle.add(0,"test1"); mTitle.add(0,"test2"); mTitle.add(0,"test3"); //RecyclerView列表进行批量UI数据更新 mRecyclerViewAdapter.notifyItemRangeInserted(0,4); // scrollToPosition(0)作用是把列表移动到顶端 mRecyclerView.scrollToPosition(0); break; } return true; } };}最后一步:在style文件中加入
<style name="AppTheme.NoActionBar"> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> </style>在清单文件中加入
android:theme="@style/AppTheme.NoActionBar"最后就可以看到瀑布流的效果了
阅读全文
0 0
- Android RecyclerView
- android RecyclerView
- android-RecyclerView
- Android RecyclerView
- Android RecyclerView
- Android--RecyclerView
- Android RecyclerView
- Android RecyclerView
- android RecyclerView
- Android RecyclerView
- Android RecyclerView
- android RecyclerView
- Android RecyclerView
- Android RecyclerView
- [Android]RecyclerView
- Android RecyclerView
- Android RecyclerView
- android recyclerview
- 厉害了!小学生用大数据研究苏轼,结论出人意料
- 苹果首席设计师:iPhone X 耗时五年,设计要等技术赶上
- 强化学习基础学习系列之求解MDP问题的value-base方法
- 无线局域网中RADIUS协议原理与实现
- 插入排序 insert_sort
- Android+RecyclerView
- android之线程池
- XListView+Library加载更多
- 网页前端代码存档
- [sql] 查询一个表中 三个字段都相同的记录
- 程序员转型学习人工智能(AI)
- Android开发:用Drawable XML绘制带阴影效果的圆形按钮
- 小学生大数据分析-自己的感触
- POJ1275 Cashier Employment (差分约束系统 + 二分答案)