Android的UI开发——RecyclerView

这篇具有很好参考价值的文章主要介绍了Android的UI开发——RecyclerView。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

RecyclerView提供了三种布局管理器即:

  • LinearLayoutManager 线性布局管理器
  • StaggeredGridLayoutManager 瀑布流布局管理器
  • GridLayoutManager 网格布局管理器
这三种布局管理器都是通过setLayoutManager方法来设置

1.LinearLayoutManager 线性布局管理器

效果如图:

Android的UI开发——RecyclerView,android,ui,java,开发语言

        1).新建一个类存放信息。
​
public class News {
    public String title; // 标题
    public String content; //内容
}

​
        2).新建一个xml文件,确定列表的布局。

Android的UI开发——RecyclerView,android,ui,java,开发语言

        3).在MainActivity中:
public class MainActivity extends AppCompatActivity {
    RecyclerView mRecyclerView;
    MyAdapter mMyAdapter ;
    List<News> mNewsList = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mRecyclerView = findViewById(R.id.recyclerview);
        // 构造一些数据
        for (int i = 0; i < 50; i++) {
            News news = new News();
            news.title = "标题" + i;
            news.content = "内容" + i;
            mNewsList.add(news);
        }
        mMyAdapter = new MyAdapter();
        mRecyclerView.setAdapter(mMyAdapter);
        LinearLayoutManager layoutManager = new LinearLayoutManager(MainActivity.this);
//        layoutManager.setOrientation(RecyclerView.HORIZONTAL); //设置横向滚动
        mRecyclerView.setLayoutManager(layoutManager);
    }

    class MyAdapter extends RecyclerView.Adapter<MyViewHoder> {

        @NonNull
        @Override
        public MyViewHoder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View view = View.inflate(MainActivity.this, R.layout.item_list, null);
            MyViewHoder myViewHoder = new MyViewHoder(view);
            return myViewHoder;
        }

        @Override
        public void onBindViewHolder(@NonNull MyViewHoder holder, int position) {
            News news = mNewsList.get(position);
            holder.mTitleTv.setText(news.title);
            holder.mTitleContent.setText(news.content);
        }

        @Override
        public int getItemCount() {
            return mNewsList.size();
        }
    }

    class MyViewHoder extends RecyclerView.ViewHolder {
        TextView mTitleTv;
        TextView mTitleContent;

        public MyViewHoder(@NonNull View itemView) {
            super(itemView);
            mTitleTv = itemView.findViewById(R.id.textView);
            mTitleContent = itemView.findViewById(R.id.textView2);
        }
    }
        4).横向滚动

        添加以下代码:

layoutManager.setOrientation(RecyclerView.HORIZONTAL);

 LinearLayoutManager layoutManager = new LinearLayoutManager(MainActivity.this);
 layoutManager.setOrientation(RecyclerView.HORIZONTAL);
 mRecyclerView.setLayoutManager(layoutManager);

2.网格布局

如果让一行显示多个,可以设置 GridLayoutManager网格布局管理器来实现。

  GridLayoutManager layoutManager = new GridLayoutManager(MainActivity.this,3);
//        layoutManager.setOrientation(RecyclerView.HORIZONTAL);  也能设置横向滚动
  mRecyclerView.setLayoutManager(layoutManager);

Android的UI开发——RecyclerView,android,ui,java,开发语言

3.ItemDecoration

通过给 设置ItemDecoration 来装饰Item的效果,比如要设置间隔线

有两个可选参数VERTICAL和HORIZONTAL。

DividerItemDecoration mDivider = new    
                        DividerItemDecoration(this,DividerItemDecoration.VERTICAL);
mRecyclerView.addItemDecoration(mDivider);
HORIZONTAL

Android的UI开发——RecyclerView,android,ui,java,开发语言Android的UI开发——RecyclerView,android,ui,java,开发语言

                             VERTICAL                                                                            HORIZONTAL 

4.实现动画效果DefaultItemAnimator

//实现点击监听器接口
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
}

按键初始化

Android的UI开发——RecyclerView,android,ui,java,开发语言

        ///******************Item 动画**********************/
        DefaultItemAnimator itemAnimator = new DefaultItemAnimator();
        itemAnimator.setAddDuration(1000);   //添加item渐入时间
       itemAnimator.setRemoveDuration(1000);  //删除item渐出时间
        mRecyclerView.setItemAnimator(itemAnimator);

在MainAcitivity中添加两个按键,并使用onClick方法进行item的添加和删除 

/****************添加item,删除item******************/
    public void onClick(View v){
        switch (v.getId()){
            case R.id.btn_add:
                        News news = new News();
                        news.title = "标题 新内容";
                        news.content = "内容 新内容";
                        mNewsList.add(1,news);
                        mMyAdapter.notifyItemInserted(1);
                        mMyAdapter.notifyDataSetChanged();  //刷新数据
                break;
            case R.id.btn_remove:
                try {
                    mNewsList.remove(1);
                    mMyAdapter.notifyItemMoved(0,1);
                    mMyAdapter.notifyDataSetChanged();
                }catch (Exception e){
                    Toast.makeText(MainActivity.this,"列表已空。",Toast.LENGTH_LONG).show();
                }

                break;
            default:
                break;
        }
    }

此处存在的bug如下:

1.点击remove之后,add无法再次使用,有log出现,但无法再次添加新的item。

 

解决方法:使用notifyDataSetChanged()

mMyAdapter.notifyDataSetChanged(); //刷新数据

通常在列表中添加、删除或者是修改数据,notifyDataSetChanged()可以在适配器绑定的数组后,不用重新刷新Activity,通知Activity的适配器更新列表的数据即可。常用的列表指的是listview、recycleview。

必须要强调的就是notifyDataSetChanged必须是列表和适配器都初始化好了之后。

notifyDataSetChanged()会记住你划到的位置,重新加载数据的时候不会改变位置,只是改变了数据;而用notifyDataSetInvalidated()时,数据改变的同时,自动滑到顶部第0条的位置.

2.数据刷新后,添加删除正常使用,但最后一条item删除后APP直接闪退

解决方法:使用try-catch文章来源地址https://www.toymoban.com/news/detail-771168.html

到了这里,关于Android的UI开发——RecyclerView的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android TV UI开发常用知识

    Google官方为Android TV的UI开发提供了一系列的规范组件,在leanback的依赖库中,这里介绍一些常用的组件,使用前需要导入leanback库。 这些Fragment有设计好的样式,只需要根据场景选择对应的Fragment,并往里面填充内容即可。 可以理解为一个水平的tab页面。左边是tab,右边是ta

    2024年02月07日
    浏览(31)
  • Android开发中关于Ui的语法糖

    android:layout_margin=“10dp”,android:padding=\\\"10dp\\\"区别 android:layout_margin=\\\"10dp\\\" : 适用对象:用于调整 View 与其父容器或相邻 View 之间的距离,即外边距(margin)。 效果:设置该属性后,View 与其父容器或相邻 View 之间会产生一定的间隔,增加 View 之间的距离。 android:padding=\\\"10dp\\\" :

    2024年02月08日
    浏览(30)
  • Android MVI架构之UI开发指南

    在整个应用程序架构中,UI层并不是唯一的层级。除了UI层之外,您还可以找到数据层,有时还有领域层。根据Android架构文档: UI层在屏幕上显示数据。 数据层暴露应用程序数据,并包含大部分业务逻辑。 领域层是一个可选的层,旨在简化和重用UI层的潜在业务逻辑复杂性。

    2024年02月03日
    浏览(32)
  • Android开发的UI设计——Material Design

    Material Design 是用于指导用户在各种平台和设备上进行视觉、动作和互动设计的全面指南。如需在您的 Android 应用中使用 Material Design,请遵循 Material Design 规范中定义的准则,并使用 Material Design 支持库中提供的新组件和样式。 安卓中的Material Design 作为Google旗下的一员——

    2024年02月13日
    浏览(26)
  • Android开发-UI界面--类微信页面设计

    一、功能说明 二、开发技术 ​ 本次用到了 layout.xml、控件、监听、fragment layout(布局) ​ 定义了用户界面的可视化结构,主要有4种布局: ConstrainLayout (约束布局):一个使用“相对定位”灵活地确定微件的位置和大小的一个布局 LinearLayout (线性布局):按照水平或垂直

    2024年02月10日
    浏览(28)
  • 安卓开发 微信ui界面设计 (Android Studio)

    功能: 开发一个类似微信的主页面框架,UI布局为上中下结构,包含4个tab界面: 开发技术为: layout xml、控件、监听,fragment; 设计流程: 创建项目 改下项目名,编程语言为java UI界面 UI界面由多个xml组成,头部标题为微信,中间留空白,底部分为四个(微信,联系人,发现,

    2024年02月15日
    浏览(48)
  • 第一行代码Android----阅读笔记(UI开发_1)

            在过去,Android应用程序的界面主要是通过编写XML的方式来实现的。写XML的好处是,不仅能够了解界面背后的实现原理,而且编写出来的界面还可以具备很好的屏幕适配性。         不过最近几年,Google又推出了一个全新界面布局: ConstraintLayout 。和以往传统的布局

    2024年01月25日
    浏览(38)
  • Android开发详解:第3章《App UI 设计》

    View View类在Android中可以理解为视图。它占据屏幕上的一个矩形区域,负责提供控件绘制和事件处理的方法。如果把Android界面比喻成窗户,那么每块玻璃都是一个view,View类是所有UI控件。 View类位于android.view包中;文本框控件TextView是View类的子类,位于android.widget包中。 在A

    2024年02月04日
    浏览(33)
  • Android架构进阶之高级UI系列(精编解析,值得收藏),Android开发面试技能介绍

    CallbackRecord callbacks; synchronized (mLock) { final long now = System.nanoTime(); // 根据指定的类型CallbackkQueue中查找到达执行时间的CallbackRecord callbacks = mCallbackQueues[callbackType].extractDueCallbacksLocked( now / TimeUtils.NANOS_PER_MS); if (callbacks == null) { return; } mCallbacksRunning = true; if (callbackType == Choreograph

    2024年04月13日
    浏览(33)
  • Android开发—RecyclerView使用

    RecyclerView 在Android中用于创建列表。 官网的解释为: RecyclerView 可以让您轻松高效地显示大量数据。您提供数据并定义每个列表项的外观,而 RecyclerView 库会根据需要动态创建元素。 当RecyclerView的列表项滚出屏幕的时候,RecyclerView不会销毁该视图,相反而是将这些视图复用到

    2024年02月16日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包