Kotlin Json 按活动选择列出

Posted

技术标签:

【中文标题】Kotlin Json 按活动选择列出【英文标题】:Kotlin Json listing by activity selection 【发布时间】:2021-08-10 15:58:59 【问题描述】:

我有一个问题。我在我的项目中列出来自 API 的数据。我在我的项目中添加了一个导航抽屉菜单。这些是 NewsActivity 和 UsNewsActivity.2 活动中的相同片段。我要做的是在单击 NewsActivity 时列出 getBreakingNews 并列出 UsGetBreakingNews。当我单击 UsNewsActivity 时。在最后一部分中,我想通过检查您来自哪个活动来列​​出突发新闻片段。我已经放弃了所需的课程。如果您能提供帮助,我会很高兴。

NewsRepository.kt

class NewsRepository(
    val db: ArticleDatabase
) 
    suspend fun getBreakingNews(countryCode: String, pageNumber: Int) =
        RetrofitInstance.api.getBreakingNews(countryCode, pageNumber)

    suspend fun getUsBreakingNews(countryCode: String, pageNumber: Int) =
        RetrofitInstance.api.getUsBreakingNews(countryCode, pageNumber)

新闻活动

   nav_view.setNavigationItemSelectedListener 
            when (it.itemId) 
                R.id.country1 -> 
                    val intent = Intent(this, NewsActivity::class.java)
                    startActivity(intent)
                
                R.id.country2->
                    val intent = Intent(this, UsNewsActivity::class.java)
                    startActivity(intent)

                

            
            true

        
      

    override fun onOptionsItemSelected(item: MenuItem): Boolean 

        if (toggle.onOptionsItemSelected(item))
            return true
        

        return super.onOptionsItemSelected(item)
    

NewsViewModel.kt

val breakingNews: MutableLiveData<Resource<NewsResponse>> = MutableLiveData()
    var breakingNewsPage = 1
    var breakingNewsResponse:NewsResponse?=null
    val usBreakingNews:MutableLiveData<Resource<NewsResponse>> = MutableLiveData()
    var usBreakingNewsPage = 1
    var usBreakingNewsResponse:NewsResponse?=null

init 
        getBreakingNews("tr")
        getUsBreakingNews("us")

  fun getBreakingNews(countryCode: String) = viewModelScope.launch 
        breakingNews.postValue(Resource.Loading())
        val response = newsRepository.getBreakingNews(countryCode, breakingNewsPage)
        breakingNews.postValue(handleBreakingNewsResponse(response))
    
    fun getUsBreakingNews(countryCode: String) = viewModelScope.launch 
        usBreakingNews.postValue(Resource.Loading())
        val response = newsRepository.getBreakingNews(countryCode, breakingNewsPage)
        usBreakingNews.postValue(handleBreakingNewsResponse(response))
    

BreakingNewsFragment.kt

if(shouldPaginate)

                

                viewModel.getUsBreakingNews("tr")
                isScrooling=false

            

控制

【问题讨论】:

【参考方案1】:

一旦您的片段被创建并附加到一个活动,您可以检查它附加到什么活动。

在您的片段中,将其放入 onCreate()

if(activity!! is NewsActivity)
//do something
 

【讨论】:

以上是关于Kotlin Json 按活动选择列出的主要内容,如果未能解决你的问题,请参考以下文章

按距离排序,你觉得我应该怎么做?

Android/Kotlin:将不同的活动“特征”组合成一个活动

有没有办法在 Kotlin 活动和 Java 活动之间获取结果?

如何列出所有活动会话的所有准备好的语句?

将一个 mutableList 从活动 A 传递到 Kotlin 中的活动 B。

如何在 Kotlin 中将对象列表从活动 A 传递到活动 B?