Android 如何在实时数据回收视图中使用ActionBar进行降序排序?
Iam使用observe for recyclerview适配器。有默认名称升序排序。我需要在单击操作栏后使用降序排序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
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)
}