我有一个传统的Room->DAO->Livedata->Repositiry->ViewModel->RecyclerView应用程序。不同的UI按钮必须将不同的数据列表传递给RecyclerView。
按一下按钮,我想:
在DAO中进行新的@查询,并作为回报获得新的LiveData<`List>对象。将这些新数据放入RecyclerViewAdapter中,并调用notifyDataSetChanged ()来创建新的列表可视化。
Dao @查询:
@Query("SELECT * FROM entry_table WHERE path LI
通过改进,我从服务器获取可流动数据,然后在视图模型中将流数据转换为Livedata,最后在活动中观察LiveData。在内部活动中,我正在为我的recyclerView使用Livedata。
但是我需要使用某种条件对数据进行过滤,并将过滤后的数据列表作为LiveData。我该怎么做,在哪里做?我能过滤Livedata吗?
我正在做的步骤是:
In my MainApi类:使用修改调用webservice,这将返回可流动的结果
public interface MainApi {
@GET("xx")
Flowable<List<User>>
我有一个应用程序,它在MainActivity的片段中显示产品列表。项目列表是使用ViewModel从Firestore数据库通过Repository读取的。
MainActivtiy:
class MainActivity : AppCompatActivity() {
private val model: ProductViewModel by lazy {
ViewModelProvider(this).get(ProductViewModel::class.java)
}
override fun onCreate(savedInstance
上下文:我正在使用Android Room和Android架构组件在回收视图中加载数据。我正在加载的数据是一个消息对象表,它有一个日期和一个消息内容。 目标:进入消息室后,会保存当前时间的时间戳,我希望Recyclerview显示在该时间戳之前在room数据库中找到的10条最新消息。查询将如下所示,其中偏移量为10,而我的_日期将是时间戳: @Query("SELECT * from message_table WHERE date<:my_date ORDER BY date DESC LIMIT :offset")
LiveData> getOldMessag
我在我的recyclerView中添加了一些新代码,当向左或向右滑动时会删除该项目,但当我移动到另一个活动,然后返回到我的recyclerView活动时,这些项目会重新出现。下面是我的MainActivity(名为TestGroceryList)的代码: public class TestGroceryList extends AppCompatActivity {
private WordViewModel mWordViewModel;
public static final int NEW_WORD_ACTIVITY_REQUEST_CODE = 1;
@O
我挣扎了一段时间所以我决定在这里寻求帮助.我使用的架构与Google示例几乎相同:。
在测试我的一个片段(androidTest)时,我遇到了以下错误:
android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:8191)
at android.view.ViewRoot
当我想清除ListAdapter中的所有数据时,出现了以下错误
java.lang.UnsupportedOperationException
at java.util.Collections$UnmodifiableCollection.clear(Collections.java:1116)
at com.zhixin.wedeep.homepage.ui.AudioPlayerActivity$onComment$$inlined$apply$lambda$3$1$1.onChanged(AudioPlayerActivity.kt:300)
我试图改变摔跤手在我的RecyclerView中的显示顺序。我想给用户一个选项,以升序、降序和随机顺序按名字显示列表。如何更改LiveData列表中项目的顺序?
摔跤手列表存储在房间数据库中,默认情况下,我按升序查询所有摔跤选手的数据库。
WrestlersDao
@Query("SELECT * FROM wrestler_table WHERE ORDER BY mFirstName :sortOrder
LIMIT :size")
LiveData<List<WrestlersEntity>> getAllWrestler
我的ViewModel (简化示例)中有以下LiveData变量:
val currentUser : LiveData<UserObject>
val allSites : LiveData<ArrayList<SiteObject>>
val filterSitesForUser : LiveData<Boolean>
val orderSitesByField : LiveData<String>
val orderSitesDirection : LiveData<Query.Direction>
val se
我正在开发新闻应用程序,我已经实现了带有进度条的livedata,但我的代码中出现了以下异常
java.lang.IllegalStateException: pb must not be null
at yodgorbek.komilov.musobaqayangiliklari.ui.TopHeadlinesFragment$initViewModel$2.onChanged(TopHeadlinesFragment.kt:60)
at yodgorbek.komilov.musobaqayangiliklari.ui.TopHeadlinesFragment$initViewMode
我正在用Android寻呼库创建一个应用程序。我用的是改装。重写代码在ItemDataSource中,在那里我不能将变量传递给它。我有一些变化无常的意图。如何在Retrofit方法中设置变量。
ItemDataSource
public class ItemDataSource extends PageKeyedDataSource<Integer, Item> {
//we will start from the first page which is 1
private static final int PAGE_NUMBER = 1;
//this will be calle
我正在和一个livedata<list<>>一起工作,它被用来挖掘一个回收器视图,然后我用它从列表中选择一个项目,然后把它传递到另一个活动中。
正如您可能看到的,当我单击项目"Ansiedad“时,我会得到另一项"Artrosis de codo”,它与所选的项不匹配。只要我不拖曳周围的回收视图,这是将被选中的项目,无论我在名单上触及的地方。当我向上或向下移动列表时,项目会发生变化,但我从未设法使其与实际选定的项匹配。它似乎总是选择在回收视图上的最后一个项目,可以看到不向下滚动。我的理论是,这是由于在过滤时创建了一个新的LiveData<List
我刚刚实现了安卓组件的新架构,Room,ViewModel,LiveData,Retrofit和RecyclerView,所以问题是,我在回收视图中显示的列表是指数级的,因为它是聊天的原型,应用程序可能会冻结一点点。
在互联网上我找到了关于PagedList适配器的文档,这可能是一个可能的解决方案,问题是,在mainActivity中,当我调用观察者时,我应该把PagedList放在哪里(在onchange函数中),我没有显示数据。
MainActivity.class
public class MainActivity extends AppCompatActivity {
pub
我的项目是一个费用跟踪器,在这里我显示了一个日期列表,在这个列表下,我有发生在这些日期上的费用列表。我有嵌套的RecyclerViews。父RecyclerView是所有费用的唯一日期列表。子RecyclerView是费用列表(当然,在唯一的日期下查看)。我的ViewModel有一个LiveData of ExpenseEntity的列表。ViewModel必须有一个包含唯一日期的日期的LiveData列表。我从一个房间数据库中获得了我的ExpenseEntity列表。
我的主要片段观察了LiveData of ExpenseEntities,因为那时我需要更新我的父母和孩子的回收视图。
我不
我创建了RecyclerView,它包含简单的单词列表( GroupVc对象的字符串名称)。由于列表可能很长,我想让它在工具栏中使用SearchView进行过滤。我的应用程序的体系结构是基于Architecture组件的,其中所有GroupVc对象都存在于Room数据库中,并通过ViewModel和Repository对象从UI访问database。我正在将我的RecyclerView与包装在LiveData中的所有GroupsVc列表一起归档,以保持它的更新。我的问题是,我不知道如何使RecyclerView可过滤。我试图在适配器中实现可过滤接口:
public class GroupsVc
设想的情况是:
Dao:
@Dao
interface TipDAO {
@Query("SELECT * FROM tip_table")
fun getAll(): LiveData<List<Tip>>
@Query("SELECT * FROM tip_table WHERE title LIKE :title")
fun findByName(title: String): Tip
@Query("SELECT * from tip_table ORDER BY title D
getMoreData()在ViewModel中是从ViewModel外部调用的,每次用户滚动到RecyclerView的底部。
存储库中的fetchMore()返回带有LoadingStatus对象的LiveData,该对象包含加载/成功/失败和错误消息
如何在loadingStatus中设置ViewModel变量,以便片段能够正确地观察它?
注意:当用户向下滚动时,可以多次调用ViewModel中的ViewModel。
ViewModel{
val loadingStatus
fun getMoreData(){
repository.fetchMore(