Search code examples
androidjsonkotlinandroid-activityfragment

Kotlin Json listing by activity selection


I have a question. I am listing data from an API in my project. I have added a Navigation Drawer Menu to my project. These are the same fragments in the NewsActivity and UsNewsActivity.2 activity. What I want to do is list the getBreakingNews when I clicking on NewsActivity and list the UsGetBreakingNews.When I Clicking on UsNewsActivity.In the last part, I want to list the breaking news fragment by checking which activity you have come from. I have dropped the required classes. I would be glad if you could help.

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)

NewsActivity

   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

            }

Control


Solution

  • Once your fragment is created and attached to an activity, you can check what activity it is attached to.

    In your fragment, put this in onCreate()

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