RecyclerView的使用(3种视图切换)
来源:互联网 发布:淘宝有退款率吗 编辑:程序博客网 时间:2024/04/29 12:05
大家可以通过导入support-v7对其进行使用
compile 'com.android.support:recyclerview-v7:23.2.1-alpha1'
这里实现ListView,GridView,Staggered(瀑布流)的切换
只是简单的实现,还没有添加和删除功能。
示例图1
示例图2
示例图3
Activity
/** * Created by zzb on 2016/3/30. */public class MainActivity extends AppCompatActivity { private RecyclerView mRecycleview; private int[] imgs={R.drawable.a1,R.drawable.a2,R.drawable.a3,R.drawable.a4, R.drawable.a5,R.drawable.a6}; private String[] mDatas = { "十几年相思加两斤黄酒,才把这句喜欢说出口。", "无人与我立黄昏,无人问我粥可温", "与这个世界交手多年,你是否光彩依旧 兴致盎然?", " 瀑布的水逆流而上 \n" + "蒲公英种子从远处飘回,聚成伞的模样, \n" + "太阳从西边升起,\n" + "落向东方。 ", "那时我们有梦,\n" + "关于文学, \n" + "关于爱情, \n" + "关于穿越世界的旅行。\n" + "如今我们深夜饮酒, \n" + "杯子碰到一起, \n" + "都是梦破碎的声音。\n" + "\n" + "——北岛《波兰来客》 ", "很怀念我们刚认识那会儿,大家都有些拘谨和真诚。 ", }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); initviews(); mRecycleview.setAdapter(new SimpleAdapter(this, mDatas, imgs)); //设置recycleview的布局管理 LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false); mRecycleview.setLayoutManager(linearLayoutManager); mRecycleview.setItemAnimator(new DefaultItemAnimator()); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); } private void initviews() { mRecycleview= (RecyclerView) findViewById(R.id.recyclerview); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); switch (id) { case R.id.action_settings: break; case R.id.listview: mRecycleview.setLayoutManager(new LinearLayoutManager(this)); break; case R.id.gridview: //列数 mRecycleview.setLayoutManager(new GridLayoutManager(this,2)); break; case R.id.stagger: //列数,垂直方向 mRecycleview.setLayoutManager(new StaggeredGridLayoutManager(2, OrientationHelper.VERTICAL)); break; default:break; } return super.onOptionsItemSelected(item); }}
Adapter
/** * Created by zzb on 2016/3/30. */public class SimpleAdapter extends RecyclerView.Adapter<MyViewHolder> { private LayoutInflater mInflater; private Context mContext; private String[] mDatas; private int[] imgs; public SimpleAdapter(Context context, String[] datas,int[] pic) { this.mContext = context; this.mDatas = datas; this.imgs=pic; mInflater = LayoutInflater.from(context); } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = mInflater.inflate(R.layout.item_textview, parent, false); MyViewHolder viewHolder = new MyViewHolder(view); return viewHolder; } /** * * @param holder * 专门用来绑定ViewHolder里的控件和数据源中position位置的数据。 */ @Override public void onBindViewHolder(MyViewHolder holder, int position) { holder.mImageView.setImageResource(imgs[position]); holder.tv.setText(mDatas[position]); } @Override public int getItemCount() { return mDatas==null ? 0 : mDatas.length; }} class MyViewHolder extends RecyclerView.ViewHolder { TextView tv; CardView cd; ImageView mImageView; public MyViewHolder(View itemView) { super(itemView); tv = (TextView) itemView.findViewById(R.id.tv_text); cd = (CardView) itemView.findViewById(R.id.cv_item); mImageView= (ImageView) itemView.findViewById(R.id.iv_pic); }}
Item_view.xml
如果遇到CardView 提示没有,那就手动添加,类似RecycleView的
compile 'com.android.support:cardview-v7:23.2.1'
<?xml version="1.0" encoding="utf-8"?><android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="wrap_content" android:layout_width="match_parent" android:layout_margin="8dp" android:id="@+id/cv_item" android:foreground="?android:attr/selectableItemBackground" card_view:cardCornerRadius="4dp" card_view:cardBackgroundColor="#795548" card_view:cardElevation="4dp" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <ImageView android:id="@+id/iv_pic" android:layout_width="match_parent" android:layout_height="200dp" android:layout_weight="1" /> <TextView android:id="@+id/tv_text" android:padding="20dp" android:textColor="#ffffff" android:textAlignment="center" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout></android.support.v7.widget.CardView>
RecycleView.xml:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context="com.it.zzb.recycledemo.MainActivity" tools:showIn="@layout/activity_main"> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerview" android:layout_width="match_parent" android:layout_height="match_parent" ></android.support.v7.widget.RecyclerView></RelativeLayout>
menu.xml:
<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="com.it.zzb.recycledemo.MainActivity"> <item android:id="@+id/action_settings" android:orderInCategory="100" android:title="@string/action_settings" app:showAsAction="never" /> <item android:id="@+id/listview" android:orderInCategory="100" android:title="listtview" app:showAsAction="never" /> <item android:id="@+id/gridview" android:orderInCategory="100" android:title="gridview" app:showAsAction="never" /> <item android:id="@+id/stagger" android:orderInCategory="100" android:title="staggered" app:showAsAction="never" /></menu>
参考资料
接下来可以参考这个实现添加、删除
Android RecyclerView 使用完全解析 体验艺术般的控件
0 0
- RecyclerView的使用(3种视图切换)
- 视图切换(改变视图的样式)
- Kotlin使用(fragment的切换与listview、recyclerView的使用)
- android视图切换库SwitchLayout的使用
- Android视图切换库的使用
- Toolbar+RecyclerView进阶使用(仿淘宝列表、网格布局之间的切换)
- Android进阶篇【chapter-10】 RecyclerView的使用与RecyclerView多类型视图的构造
- 简单的视图切换(tag)
- 实现视图的切换(动画)
- 视图切换的方式
- UINavigationController的视图切换
- rootviewcontroler视图的切换
- 多视图的切换
- 视图控制器的切换
- 视图的切换
- 实现视图的切换
- 新视图RecyclerView(一)
- RecyclerView+RecyclerView.Adapter+RecyclerView.ViewHolder的使用
- TemplateBinding 注意事项
- 《股票成交量操作策略》
- python中关于序列化问题
- 关路灯
- react native android使用react-native-tab-navigator来做底部导航tabbar(2)一个坑:navigator
- RecyclerView的使用(3种视图切换)
- 基于C++11的事件驱动框架
- python爬虫安装scrpay时遇到问题及解救方式
- 手机访问网站自动跳转到手机版
- C++第3次实验-项目一
- mysql账号增删改、数据导入导出命令举例
- node.js中如何使用mongodb数据库
- Android 用代码实现防打扰【能够屏蔽电话和短信】
- Android实现修改状态栏颜色