Android 如何在实时数据回收视图中使用ActionBar进行降序排序?

Android 如何在实时数据回收视图中使用ActionBar进行降序排序?,android,kotlin,Android,Kotlin,Iam使用observe for recyclerview适配器。有默认名称升序排序。我需要在单击操作栏后使用降序排序 private fun getAllTeams(){ viewModel.getMyGroupMembers().observe(viewLifecycleOwner, Observer { val sortedDescending = descending(it) // -> it have to be in onOptionsItemSelec

Iam使用observe for recyclerview适配器。有默认名称升序排序。我需要在单击操作栏后使用降序排序

private fun getAllTeams(){
    viewModel.getMyGroupMembers().observe(viewLifecycleOwner, Observer {
        val sortedDescending = descending(it) // -> it have to be in onOptionsItemSelected
        val sortedList = it.sortedBy {
            it.name }

        Log.d("sorted",sortedList.toString())
        scoreAdapter.submitList(sortedList)
        scoreAdapter.notifyDataSetChanged()

    })
}
单击导航项目后,它将随薪资降序排序(数据类变量)而更改。

这是我的降序方法

private fun descending (getList: List<DataClass>) : List<DataClass>{

    val test = getList.sortedByDescending {
      it.value
    }
    return test
}
private(getList:List):List{
val测试=getList.sortedByDescending{
it.value
}
回归试验
}
如何将所有这些结合到观察者中?

class TeamScoreTableFragment : Fragment() {

private lateinit var binding: FragmentTeamScoreTableBinding
private lateinit var scoreAdapterBinding: ItemScoreLayoutBinding
private val scoreAdapter: ScoreAdapter by inject()
private val viewModel : ScoreViewModel by inject()



override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setHasOptionsMenu(true)
}

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
    binding = FragmentTeamScoreTableBinding.inflate(inflater,container,false)
    scoreAdapterBinding = ItemScoreLayoutBinding.inflate(inflater,container,false)

    return binding.root
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)

    getAllTeams()
    getGroups()

    binding.rvScoreRecyclerView.apply {

        adapter = this@TeamScoreTableFragment.scoreAdapter
        layoutManager = LinearLayoutManager(context)
    }
}

private fun getAllTeams(){
    viewModel.getMyGroupMembers().observe(viewLifecycleOwner, Observer {
        val sortedDescending = descending(it)
        val sortedList = it.sortedBy {
            it.name }

        Log.d("sorted",sortedList.toString())
        scoreAdapter.submitList(sortedDescending)
        scoreAdapter.notifyDataSetChanged()

    })
}

private fun getGroups() {
    val test = viewModel.getAllGroups()
}

override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
    inflater.inflate(R.menu.menu_togle_items,menu)
    super.onCreateOptionsMenu(menu, inflater)
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    if (item.itemId == R.id.menuTogle){

    }
    return super.onOptionsItemSelected(item)
}

private fun descending (getList: List<DataClass>) : List<DataClass>{

    val test = getList.sortedByDescending {
      it.value
    }
    return test
}
类TeamScoreTableFragment:Fragment(){
私有lateinit变量绑定:FragmentTeamScoreTableBinding
私有lateinit变量scoreAdapterBinding:ItemScoreLayoutBinding
私有val scoreAdapter:scoreAdapter by inject()
private val viewModel:ScoreViewModel by inject()
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
设置选项菜单(真)
}
覆盖创建视图(充气机:布局充气机,容器:ViewGroup?,savedInstanceState:Bundle?):视图{
绑定=碎片绑定。充气(充气机、容器、假)
scoreAdapterBinding=ItemScoreLayoutBinding.充气(充气机、容器、假)
返回binding.root
}
覆盖已创建的视图(视图:视图,保存状态:捆绑?){
super.onViewCreated(视图,savedInstanceState)
getAllTeams()
getGroups()
binding.rvScoreRecyclerView.apply{
适配器=this@TeamScoreTableFragment.scoreAdapter
layoutManager=LinearLayoutManager(上下文)
}
}
私人娱乐getAllTeams(){
viewModel.getMyGroupMembers().observe(viewLifecycleOwner,Observer{
val SORTEDESCENDING=下降(it)
val sortedList=it.sortedBy{
it.name}
Log.d(“已排序”,sortedList.toString())
scoreAdapter.submitList(分类搜索)
scoreAdapter.notifyDataSetChanged()
})
}
私人娱乐团体(){
val test=viewModel.getAllGroups()
}
覆盖创建选项菜单(菜单:菜单,充气机:菜单充气机){
充气机。充气(右菜单。菜单项,菜单项)
super.onCreateOptions菜单(菜单,充气机)
}
覆盖选项ItemSelected(项:菜单项):布尔值{
if(item.itemId==R.id.menuTogle){
}
返回super.onOptionsItemSelected(项目)
}
私人娱乐下降(getList:List):列表{
val测试=getList.sortedByDescending{
it.value
}
回归试验
}
私有lateinit变量绑定:FragmentTeamScoreTableBinding
私有lateinit变量scoreAdapterBinding:ItemScoreLayoutBinding
私有val scoreAdapter:scoreAdapter by inject()
private val viewModel:ScoreViewModel by inject()
私有lateinit变量项:列表
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
设置选项菜单(真)
}
覆盖创建视图(充气机:布局充气机,容器:ViewGroup?,savedInstanceState:Bundle?):视图{
绑定=碎片绑定。充气(充气机、容器、假)
scoreAdapterBinding=ItemScoreLayoutBinding.充气(充气机、容器、假)
返回binding.root
}
覆盖已创建的视图(视图:视图,保存状态:捆绑?){
super.onViewCreated(视图,savedInstanceState)
getAllTeams()
getGroups()
binding.rvScoreRecyclerView.apply{
适配器=this@TeamScoreTableFragment.scoreAdapter
layoutManager=LinearLayoutManager(上下文)
}
}
私人娱乐getAllTeams(){
viewModel.getMyGroupMembers().observe(viewLifecycleOwner,Observer{
项目=it
val sortedList=it.sortedBy{
it.name}
Log.d(“已排序”,sortedList.toString())
scoreAdapter.submitList(分类列表)
scoreAdapter.notifyDataSetChanged()
})
}
私人娱乐团体(){
val test=viewModel.getAllGroups()
}
覆盖创建选项菜单(菜单:菜单,充气机:菜单充气机){
充气机。充气(右菜单。菜单项,菜单项)
super.onCreateOptions菜单(菜单,充气机)
}
覆盖选项ItemSelected(项:菜单项):布尔值{
if(item.itemId==R.id.menuTogle){
递减(项目)
scoreAdapter.submitList(项目)
scoreAdapter.notifyDataSetChanged()
}
返回super.onOptionsItemSelected(项目)
}
私人娱乐下降(getList:List):列表{
val测试=getList.sortedByDescending{
it.value
}
回归试验
}
**你是这个意思吗**
私有变量项:列表?=null
私人娱乐getAllTeams(){
viewModel.getMyGroupMembers().observe(viewLifecycleOwner,Observer{
项目=it
val sortedList=it.sortedBy{
it.name}
Log.d(“已排序”,sortedList.toString())
scoreAdapter.submitList(分类列表)
scoreAdapter.notifyDataSetChanged()
})
}
覆盖选项ItemSelected(项:菜单项):布尔值{
if(item.itemId==R.id.menuTogle){
项?让{下降(it)}
}
返回super.onOptionsItemSelected(项目)
}

为“it”对象创建一个全局变量(比如xyz)。当你得到响应时,do xyz=it,然后在onoptionItemSelected中使用xyz。你能用代码解释一下吗?我是一个初学者:)好的,你能发布这个类/活动的开始吗?你可以在这里调用这个onoptionItemSelected吗?我发布了所有片段否,只要做一下(item.itemId==R.id.menuTogle){下降(项目)}在onoptionsItemSelectedAllRight中我得到了它。太谢谢你了!你能投票给我答案吗?答案更新了
class TeamScoreTableFragment : Fragment() {

private lateinit var binding: FragmentTeamScoreTableBinding
private lateinit var scoreAdapterBinding: ItemScoreLayoutBinding
private val scoreAdapter: ScoreAdapter by inject()
private val viewModel : ScoreViewModel by inject()



override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setHasOptionsMenu(true)
}

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
    binding = FragmentTeamScoreTableBinding.inflate(inflater,container,false)
    scoreAdapterBinding = ItemScoreLayoutBinding.inflate(inflater,container,false)

    return binding.root
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)

    getAllTeams()
    getGroups()

    binding.rvScoreRecyclerView.apply {

        adapter = this@TeamScoreTableFragment.scoreAdapter
        layoutManager = LinearLayoutManager(context)
    }
}

private fun getAllTeams(){
    viewModel.getMyGroupMembers().observe(viewLifecycleOwner, Observer {
        val sortedDescending = descending(it)
        val sortedList = it.sortedBy {
            it.name }

        Log.d("sorted",sortedList.toString())
        scoreAdapter.submitList(sortedDescending)
        scoreAdapter.notifyDataSetChanged()

    })
}

private fun getGroups() {
    val test = viewModel.getAllGroups()
}

override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
    inflater.inflate(R.menu.menu_togle_items,menu)
    super.onCreateOptionsMenu(menu, inflater)
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    if (item.itemId == R.id.menuTogle){

    }
    return super.onOptionsItemSelected(item)
}

private fun descending (getList: List<DataClass>) : List<DataClass>{

    val test = getList.sortedByDescending {
      it.value
    }
    return test
}
private lateinit var binding: FragmentTeamScoreTableBinding
private lateinit var scoreAdapterBinding: ItemScoreLayoutBinding
private val scoreAdapter: ScoreAdapter by inject()
private val viewModel : ScoreViewModel by inject()

private lateinit var items : List<DataClass>



override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setHasOptionsMenu(true)
}

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
    binding = FragmentTeamScoreTableBinding.inflate(inflater,container,false)
    scoreAdapterBinding = ItemScoreLayoutBinding.inflate(inflater,container,false)

    return binding.root
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)

    getAllTeams()
    getGroups()

    binding.rvScoreRecyclerView.apply {

        adapter = this@TeamScoreTableFragment.scoreAdapter
        layoutManager = LinearLayoutManager(context)
    }
}

private fun getAllTeams(){
    viewModel.getMyGroupMembers().observe(viewLifecycleOwner, Observer {
        items = it

        val sortedList = it.sortedBy {
            it.name }

        Log.d("sorted",sortedList.toString())
        scoreAdapter.submitList(sortedList)
        scoreAdapter.notifyDataSetChanged()

    })
}

private fun getGroups() {
    val test = viewModel.getAllGroups()
}

override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
    inflater.inflate(R.menu.menu_togle_items,menu)
    super.onCreateOptionsMenu(menu, inflater)
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    if (item.itemId == R.id.menuTogle){
        descending(items)
        scoreAdapter.submitList(items)
        scoreAdapter.notifyDataSetChanged()
    }
    return super.onOptionsItemSelected(item)
}

private fun descending (getList: List<DataClass>) : List<DataClass>{

    val test = getList.sortedByDescending {
      it.value
    }
    return test
}
**Do you mean so?**
private var items : List<DataClass>? = null

private fun getAllTeams(){
    viewModel.getMyGroupMembers().observe(viewLifecycleOwner, Observer {
        items = it
        
        val sortedList = it.sortedBy {
            it.name }

        Log.d("sorted",sortedList.toString())
        scoreAdapter.submitList(sortedList)
        scoreAdapter.notifyDataSetChanged()

    })
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    if (item.itemId == R.id.menuTogle){
        items?.let { descending(it) }
    }
    return super.onOptionsItemSelected(item)
}