【问题标题】:How to change order of listview [duplicate]如何更改列表视图的顺序[重复]
【发布时间】:2020-03-27 05:27:11
【问题描述】:

我有一个列表视图,它从 Firebase 获取数据,问题是它显示最后添加的元素和列表视图顶部的旧元素,我试图更改顺序。

这是我的活动代码:

package com.example.appcamping.Gestion;


public class EnviarMostrarGastos extends AppCompatActivity {

ListView listview;
ArrayList<String> arrayList = new ArrayList<>();
ArrayAdapter<String> arrayAdapter;
Module2 module2;
private EditText mEditPrecio;
private EditText mEditNombreGasto;
private DatabaseReference mDatabaseGastos;
private Button mEnviarGastos;
private String mFechaGasto;
//----------------MOSTRAR GASTOS
private DatabaseReference databaseReference;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_enviar_mostrar_gastos);

    mFechaGasto = new Date().toString();
    mEditNombreGasto = (EditText) findViewById(R.id.editNombreGasto);
    mEditPrecio = (EditText) findViewById(R.id.editPrecio);
    mDatabaseGastos = FirebaseDatabase.getInstance().getReference();
    mEnviarGastos = findViewById(R.id.btnEnviarGastos);
    mEnviarGastos.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String key = mDatabaseGastos.child("Gastos").push().getKey();
            String nombregasto = mEditNombreGasto.getText().toString();
            String precio = mEditPrecio.getText().toString();
            String fechagasto = mFechaGasto;

            mDatabaseGastos.child("Gastos").child(key).child("NombreGasto").setValue(nombregasto);
            mDatabaseGastos.child("Gastos").child(key).child("Precio").setValue(precio);
            mDatabaseGastos.child("Gastos").child(key).child("FechaGasto").setValue(fechagasto);
        }
    });

    //-----------------MOSTRAR GASTOS--------------
    databaseReference= FirebaseDatabase.getInstance().getReference("Gastos");
    listview=(ListView) findViewById(R.id.listMostrarGastos);
    arrayAdapter= new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arrayList);
    listview.setAdapter(arrayAdapter);
    databaseReference.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
            String value=dataSnapshot.getValue(Gastos.class).toString();
            arrayList.add(value);
            arrayAdapter.notifyDataSetChanged();
        }

        @Override
        public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

        }

        @Override
        public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

        }

        @Override
        public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });

}

}

这是我的 xml: enter image description here

这是显示元素的方式:enter image description here

【问题讨论】:

    标签: java android firebase android-studio


    【解决方案1】:

    如果你想颠倒顺序,你可以在adapter.notifydatasetchanged()之前使用下面的代码

    Collections.reverse(arrayList);
    

    【讨论】:

      猜你喜欢
      • 2013-07-18
      • 1970-01-01
      • 2013-08-08
      • 1970-01-01
      • 2015-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多