Android简略的两级谈论功用完成

前语

在App开发过程中,做了文章页面,那谈论的功用自然是必不可少的,怎么做呢,假如仅仅做一个简略的谈论不带回复功用的话,那和之前做毕设时分的我也看不到前进呀,这怎么行呢?所以我翻开‘稀土’App,随意看了几个文章,试了试谈论的功用,所以便开端了我的构思。我想要完成的作用如下图所示,如何完成这样一个页面呢?我使用的办法是RecyclerView中再嵌套一个RecyclerView,一个用来展现一级谈论,另一个则用来展现相应的二级谈论,思路有了,下面就开端我的完成。

Android简单的两级评论功能实现

一、数据库

1、构建数据库

要想做好一个功用,数据库的构建是重中之重。下图是我构造的谈论实体类

Android简单的两级评论功能实现

谈论表中包括如下字段:

  • id –谈论主键(自动生成)
  • newsId — 主键
  • number — 谈论的用户主键
  • content — 谈论内容
  • time — 谈论时刻
  • level — 谈论级别(有两级,当谈论的目标是文章作者时,level为1,当谈论目标为文章内的谈论时,level为2,默许level为1)
  • replyNumber — 谈论回复的用户主键
  • replyId — 谈论回复的谈论主键(只要level为2的谈论才会用到该字段,所以默许为空)

replyNumber其实这儿不应该默许为空的,由于无论是那种类型的回复,都是有对应的用户的,这个疏忽也造成了我在后面构建“我的谈论”界面时,无法展现出文章作者的详细信息。

2、封装数据库

数据拜访层Dao首要封装了对数据库的拜访:

Android简单的两级评论功能实现

很平常的SQL语句,只简略说明下:分别是增加谈论、根据id删除谈论、获取该文章的一切谈论、获取该用户的一切谈论、经过id获取该谈论

(省略了CommentTask接口即完成)

最终仓库层将这些办法都封装起来,方便后续调用,如下图所示:

Android简单的两级评论功能实现

二、布局

1、文章概况界面的谈论布局

Android简单的两级评论功能实现

便是个RecyclerView哈哈

2、谈论的适配器布局

Android简单的两级评论功能实现

能够看到适配器布局中还包括了一个RecyclerView,这儿面展现的便是二级谈论

3、二级谈论的适配器布局

Android简单的两级评论功能实现

这个布局很简略,就由几个TextView组件构成

三、代码逻辑

首要,在ViewModel层初始化该文章的一切谈论,调查谈论数据改变,给谈论适配器数据赋值并刷新,在谈论适配器中再对level为2的谈论数据进行过滤并赋值给回复适配器。

1、获取谈论数据

var comments = MutableLiveData<List<CommentInfo>>()
comments.value = commentStoreRepository.getCommentsByNewId(newsId)

经过文章的id获取到谈论

2、给谈论适配器数据赋值

Android简单的两级评论功能实现

3、在谈论适配器处理数据

首要,谈论适配器中的数据是经过文章的id获取到的一切谈论,包括了一级和二级谈论,在谈论适配器展现的当然不能是一切的谈论,而是一切一级的谈论,而二级谈论的数据需求再进行过滤传递给回复适配器

所以,在绑定ViewHolder以及getItemCount时,需求对传递的数据进行过滤,

Android简单的两级评论功能实现
如图所示,allList是经过文章的id获取到的一切谈论,list是level为1的一切谈论,replyList是level为2的一切谈论。getItemCount返回的是一级谈论的个数。在绑定ViewHolder时,将一些回调函数和一级谈论和二级谈论列表传递进去,接着就看ViewHolder中的数据处理逻辑,如下两张图

Android简单的两级评论功能实现

这张图仅仅一些简略的一级数据的赋值和一些回调参数的调用传参

Android简单的两级评论功能实现

这儿首要对二级谈论进行过滤,过滤出与该条一级谈论相关联的二级谈论,接着对布局进行一些操作,接着是赋值操作和回复适配器中一些函数的完成。

4、在回复适配器处理数据

Android简单的两级评论功能实现

在这儿就不需求对数据进行处理了,只要简略的赋值和回调了

5、回调函数的完成

Android简单的两级评论功能实现

四、完成作用

1、谈论功用

Android简单的两级评论功能实现

2、我的谈论展现

Android简单的两级评论功能实现

这儿的“@3333333333”便是由于replyNumber为空的导致无法展现出文章作者的详细信息,只要展现用户主键了,后面再进行修改。

五、结语

就这样,一个简略的二级谈论功用就完成了。文章若出现过错,欢迎各位批评指正,写文不易,转载请注明出处谢谢。