使用安卓分页库加载下一个数据失败了
我正在尝试使用室图livedata-viewModel显示呼叫日志列表. 不编写我的代码,我的代码效果很好.我也想使用分页. 在我的数据库中,我总共有25个呼叫日志记录.前9个呼叫日志正在列表中显示. 通过调试,我发现在通过Dao读取数据模型中的数据时,它返回了大小25的列表.但是只有其中的前9个是非null.列表中的所有其他条目为null. 我期望无效的数据会很快刷新 列表.但是问题是无效 有效数据. 观察方法的观察方法仅被调用一次,仅是第一次. 我认为我做错了什么. 这是下面的代码 片段 public class CallLogListFragment extends Fragment { private static final String TAG = "RecentCallsFragment"; public static String getTAG() { return TAG; }
0 2024-02-19
编程技术问答社区
JUnitTest中MutableLiveData为空
我想编写一个单元测试.因此,我需要MutableLivedata.我从设置非常基本的测试开始,但我无法实例化mutableLiveData对象.当我运行测试时,我总是无效的.我必须嘲笑什么吗?有什么建议么? @RunWith(MockitoJUnitRunner.class) public class DefaultLiveDataTest { private static final int EXPECTED = 5; private final MutableLiveData underTest = new MutableLiveData(); @Test public void exampleTest() { underTest.setValue(EXPECTED); //underTest is Null assertEquals(underTest.getValue().intValue(),
0 2024-02-19
编程技术问答社区
java.lang.IllegalStateException。不能在后台线程上调用observeForever
有人可以帮助我找到我在哪里出错的地方.每当工作人员的数据更改时,我需要继续观察网络数据并更新UI.请注意,这是在升级到Androidx之前正在工作的. 这是一个工人课. class TestWorker(val context: Context, val params: WorkerParameters): Worker(context, params){ override fun doWork(): Result { Log.d(TAG, "doWork called") val networkDataSource = Injector.provideNetworkDataSource(context) networkDataSource.fetchData(false) return Worker.Result.SUCCESS } companion object {
在房间DB上的插入不会触发活动的观察者
在我的活动中,我有一个观察者观察此查询 @Query("""Select *, (Select account_id from accounts where account_id = from_account_id) as contact_account_id, (Select first_name from accounts where account_id = from_account_id) as contact_first_name, (Select last_name from accounts where account_id = from_account_id) as contact_last_name from messages inner join messageQueue on messages.client_message_id = messagequeue.client_message_id
0 2024-02-19
编程技术问答社区
带有视图模型和实时数据的ViewPager,所有6个标签的数据都被最后一个标签的数据所取代。
我正在用6 tabs在A ViewPager上工作,其中它只有一个片段TimesListFragment 取决于传递给TimesListFragment的参数,它调用API EG;科学,技术,旅行等 我遵循Google的GithubBrowserSample 我有TimesListFragment - > TimesViewModel - > TimesRepository 有6个选项卡,当我击中API时,所有选项卡显示出相同的结果,如果是最后一个argument storypageradapter.kt class StoriesPagerAdapter(fragmentManager: FragmentManager?) :FragmentStatePagerAdapter(fragmentManager){ private val sections= arrayListOf("science","technology","busi
0 2024-02-19
编程技术问答社区
如何在recyclerview中加载数据?
我正在创建一个Android应用程序,并试图在RecyClerview中设置数据,我正在使用Kotlin使用MVVM架构模式,我可以在LogCat中看到数据,但是当应用程序加载时,我没有在RecyClerview中看到任何数据.以下是我的代码. MainActivity class MainActivity : AppCompatActivity() { lateinit var productViewModel: ProductViewModel private lateinit var binding: ActivityMainBinding val adapter = ProductAdapter() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = Activ
Android ViewModel。我是否应该像官方例子中那样从LiveData "借用 "observe()方法?
使用ViewModels时,视图观察ViewModel.它必须注册为观察者.在public class MyViewModel extends ViewModel { private MutableLiveData> users; public LiveData> getUsers() { if (users == null) { users = new MutableLiveData>(); loadUsers(); } return users; } private void loadUsers() { // Do an asynchronous operation to fetch users. } } public class MyActivity extends AppCompatActivity { public void onCreate(Bundle savedInstanceState) { // Cr
0 2024-02-19
编程技术问答社区
在片段之间共享ViewModels或在ViewModels之间共享LiveData
基本上,我想要一种方法正确在片段之间共享viewmodels或在ViewModels之间共享livedata. 我的场景: 我有2个片段(FragmentA&FragmentB) - 每个片段都有自己的ViewModels: FragmentA有ViewModelA,FragmentB ViewModelB. ViewModelA有LiveDataA1,ViewModelB有LiveDataB1和ViewModelB ViewModelB仅允许具有LiveDataB2和ViewModelA不能拥有它. 问题我要FragmentA从ViewModelB中观察LiveDataB2. 方法#1: 除ViewModelA外,ViewModelB也可以在FragmentA中使用(因此,它就像Fragmenta中的2个ViewModels). 因此,FragmentA将从ViewModelB中观察LiveDataB2. 这是我当前的实施.但是我觉
0 2024-02-19
编程技术问答社区
如何使用viewmodel、repository和livedata访问房间数据库
我是Android开发的新手.在我的应用程序中,我需要在数据库中有一个用户表.我已经使用房间创建了数据库.现在,如果我允许在主线程中运行DB,我的应用程序正常运行.但是,我不想在主线程中运行它.因此,我创建了存储库和ViewModel类,并使用ViewModel在主线程中调用DB.尽管如此,如果我不在数据库构建语句中放置allowMainThreadQueries(),java.lang.IllegalStateException: Cannot access database on the main thread since it may potentially lock the UI for a long period of time.错误会弹出.我检查了以下问题: 如何与室内数据库,livedata,livedata,livedata,livedata,livedata,存储库,并且ViewModel一起工作? ,尽管如此,在我的代码中找不到错误.我的代码怎么了? 我的数据库
0 2024-02-19
编程技术问答社区
在MVI模式中提供或发送渠道的正确位置
i预先将数据加载到回收流中.为了做到这一点,我在活动的ongreate()中都有遵循代码: override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) setupUI() setupViewModel() observeViewModel() if (savedInstanceState == null) { mainViewModel.userIntent.offer(MainIntent.FetchUser) } } 正如您看到的i offer()时,当SavedinStancestate为null时,问题是当我们有过程死亡时(您可以简单地通
0 2024-02-19
编程技术问答社区
如何读取DataBaseRoom并显示一个textView
我正在使用databaseroom练习,对于他们来说,我创建了一个按钮,这让我可以阅读数据库,我想将用户的名称放置,然后按下按钮(读取数据库)反映我,他的名字,最后TexView的名称和年龄,问题是我不知道如何在文本视图中显示数据. 我想执行动作的活动 //实体 @Entity(tableName = "user_table") data class User( @PrimaryKey(autoGenerate = true)@ColumnInfo(name = "id") val id: Int, val firstName: String, val lastName: String, val age: Int ) //dao @Dao interface UserDao { @Insert(onConflict = OnConflictStrategy.IGNORE) suspend fun addUser
0 2024-02-19
编程技术问答社区
安卓分页库-我应该使用哪种数据源?
我想要的是:我想仅通过网络调用来实现. 我理解的内容:,数据源具有我可以扩展的三个类. pageKeyedDataSource:如果您的Web服务在URL中具有Pagenumber,则可以使用它. itemKeyedDataSource:当您获取嵌套数据时,您可以使用它.例如,在特定评论中得到答复. pactionaldatasource:当您知道确切的数据数时可以使用. 我尝试的是:代码在下面. mainActivity.java public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity
从一个不同的类中更新视图模型
我试图了解ViewModel和Livedata. 在主要活动中,我正在观察Livedata 在mytask中,我正在将livedata上的数据设置在活动中. . 问题是mytask中的数据集未在UI上更新. 主动脉 public class MainActivity extends AppCompatActivity { private MyViewModel viewModel; private TextView tv2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv2 = findViewById(R.id.textView2);
0 2024-02-19
编程技术问答社区
Android用来自MutableStateFlow<List<MyDataObject>>()的数据对象字段的值更新活动。
当我更改用于显示下载进度栏的对象中的字段值时,我一直在可靠地从viewModel()更新我的活动/UI层.该活动观察列表中的对象的添加和去除良好,但没有更改进度字段. 数据类 data class DownloadObject( val id: String?, var progress: Float, ) ViewModel class MyViewModel () : ViewModel() { private val _progressList = MutableStateFlow>(emptyList()) val progressList: StateFlow> get() = _progressList //add to list updates the activity _progressList.value +=
移除+添加后,片段不能接收LiveData的更新
我目前正在玩fragment的生命周期,与ViewModel和LiveData. . 我有2 fragments,fragmentA和fragmentB. 我在每个fragment的onCreate方法中添加Observer. @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); sharedViewModel = ViewModelProviders.of(getActivity()).get(SharedViewModel.class); sharedViewModel.getText().observe(this, new Observer() { @Override public void onChanged(CharSequenc
安卓实时数据观察者异常
我正在尝试实现新的Android体系结构组件,并在片段和视图模型中使用了实时数据,但是当我将观察者添加到实时数据中时,应用程序崩溃了. Process: com.nrs.nsnik.architecturecomponents, PID: 3071 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.nrs.nsnik.architecturecomponents/com.nrs.nsnik.architecturec omponents.view.MainActivity}: java.lang.ClassCastException: android.arch.lifecycle.LiveData_LifecycleBoundObserver_LifecycleAdapter cannot be cast to android.arch.lifecycle.GeneratedAdapte
可以在Android中的单个屏幕上具有不同的观点模型吗?
在先前的堆叠问题中,建议每个Activity应该有一个ViewModel.如果屏幕上需要不同的模型数据的"部分",则应在单个ViewModel中使用多个LiveData来处理. With Compose now released, is it ok to在屏幕上有不同的"视图模型",即每个部分表示为不同的composable,并且每个组合都有其自己的,它具有自己的odel LiveData? 解决方案 我们建议每个屏幕1 ViewModel,然后从那里传递状态.这使得组件更加重复使用和可测试,因为您的组合没有与特定的ViewModel绑定,只是它们所需的状态. @Composable fun MyScreen(viewModel: ViewModel) { Column { TopPart(viewModel.topState) BottomPart(viewModel.bottomState) } } @Composable fun
4 2024-02-19
编程技术问答社区
我可以在我的视图模型中做一个livedata观察器吗? 或者我应该总是在片段/活动中做观察器?
我是MVVM的新手.因此,我从片段/活动中有2个向服务器的请求,第一个请求的结果将用作第二个请求的输入参数. 因此,首先在我的片段中,当单击按钮时,我提出请求检查用户是否被禁止,如果不是,则此用户可以创建帖子. 因此,首先我检查用户是否在我的片段中使用此代码 class CreateEventFragment : Fragment() { lateinit var model: CreateEventViewModel override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { model = ViewModelProvider(this).get(CreateEventViewModel::class.java)
如何在安卓系统中用新的架构组件追踪当前位置?
我有一个项目,在该项目中,我成功地实现了位置跟踪功能,并且工作正常.我正在每30秒内使用融合的位置提供商来跟踪用户当前位置(在MainActivity启动时开始跟踪). 现在,我计划通过新介绍的Android体系结构组件更新该项目.但是我不知道如何使用视图模型实现位置跟踪.我应该使用 ViewModel或AndroidViewModel 吗?如何实现这一目标. 解决方案 正确的方法是让A TrackingRepository在设备位置的背景线程中进行所有计算.创建一个MutableLiveData您将分配位置.然后使用postValue()或setValue()更新其值.为此MutableLiveData写一个公共getter.此存储库将是您的位置API. 然后您的ViewModel应调用存储库的方法,并将其结果分配给ViewModel的LiveData变量.然后在您的片段/活动中观察ViewModel的寿命.就像记住使用依赖注入,这确实有助于新的体系结构. 其
如何从Room获取LiveData?
我试图从房间里拿出Livedata.因此,如果更改数据库中的任何内容,我的RecycleView可以具有实时更新 我已经尝试了leideData,但有效,但是当我添加总是显示此错误的livedata时. error: Not sure how to convert a Cursor to this method's return type (androidx.lifecycle.LiveData>). public abstract java.lang.Object getAll(@org.jetbrains.annotations.NotNull() 我在此网站上搜索了解决方案,但是此问题的每个问题都使用了Rxjava,rxandroid,rxkotlin或arrayList. 对于他们来说,解决方案是用列表替换arraylist,而RX尝试Coroutine. 好吧,我正在
0 2024-02-19
编程技术问答社区