Member 13644629 Ответов: 1

Добавить кнопку для фильтрации в ListView (база данных военнослужащих в реальном времени )


Привет Как я могу использовать кнопку для фильтрации элементов по значениям в listview (Firebase)?

public class Verktoyliste extends AppCompatActivity {

    DatabaseReference databaseVerktøy;

    Button btnleggtilverktøy;
    ListView lvverktøylistealt;

    List<Verktoy> listverktoy;



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

        databaseVerktøy = FirebaseDatabase.getInstance().getReference("Verktøy");

        lvverktøylistealt = (ListView) findViewById(R.id.lvverktøylistealt);


        btnleggtilverktøy = (Button) findViewById(R.id.btnleggtilverktøy);

        listverktoy = new ArrayList<>();


        btnleggtilverktøy.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent leggtil = new Intent(Verktoyliste.this, Leggtilverktoy.class);
                startActivity(leggtil);

            }
        });
    }
    @Override
    protected void onStart() {
        super.onStart();

        databaseVerktøy.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                listverktoy.clear();


                for (DataSnapshot verktoySnapshot : dataSnapshot.getChildren()) {
                    Verktoy verktoy = verktoySnapshot.getValue(Verktoy.class);

                    listverktoy.add(verktoy);


                }

                listVerktoy adapter = new listVerktoy(Verktoyliste.this, listverktoy);
                lvverktøylistealt.setAdapter(adapter);


            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
    }

}


public class listVerktoy extends ArrayAdapter<Verktoy> {

    private Activity context;
    private List<Verktoy> listverktoy;

    public listVerktoy(Activity context, List<Verktoy> listverktoy){
        super (context, R.layout.list_verktoyalt, listverktoy);
        this.context = context;
        this.listverktoy = listverktoy;

    }

    @NonNull
    @Override
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        LayoutInflater inflater = context.getLayoutInflater();



        View listViewItem = inflater.inflate(R.layout.list_verktoyalt, null, true);

        TextView tvverktøynavnlist = (TextView)listViewItem.findViewById(R.id.tvverktøynavnlist);
        TextView tvverktøytypelist = (TextView)listViewItem.findViewById(R.id.tvverktøytypelist);
        TextView tvverktøystatuslist = (TextView)listViewItem.findViewById(R.id.tvverktøystatuslist);

        Verktoy verktoy = listverktoy.get(position);


        tvverktøynavnlist.setText(verktoy.getVerktøynavn());
        tvverktøytypelist.setText(verktoy.getVerktøytype());
        tvverktøystatuslist.setText(verktoy.getVerktøystatus());

        return listViewItem;


    }
}


public class Verktoy {

    String verktøynavn;
    String verktøytype;
    String verktøystatus;
    String verktøyid;


    public Verktoy(){

    }

    public Verktoy(String verktøyid) {
        this.verktøyid = verktøyid;
    }

    public String getVerktøyid() {
        return verktøyid;
    }

    public void setVerktøyid(String verktøyid) {
        this.verktøyid = verktøyid;
    }

    public Verktoy(String verktøynavn, String verktøytype, String verktøystatus) {
        this.verktøynavn = verktøynavn;
        this.verktøytype = verktøytype;
        this.verktøystatus = verktøystatus;

    }

    public String getVerktøynavn() {
        return verktøynavn;
    }

    public String getVerktøytype() {
        return verktøytype;
    }

    public String getVerktøystatus() {
        return verktøystatus;
    }
}


Что я уже пробовал:

Привет,
Я еще ничего не пробовал, потому что я новичок в этом деле :)

1 Ответов

Рейтинг:
12

David Crow

Все, что вам нужно, это здесь.


Member 13644629

Но это решение предназначено для поиска фильтров. Как насчет того, чтобы использовать кнопку для фильтрации, например, только тех стран, население которых превышает...?

David Crow

В ответ на нажатие кнопки см. здесь.

Member 13644629

Спасибо, Дэвид, мне удалось отфильтровать свой список, как я и хотел. (Не с помощью кнопки, а с помощью отфильтрованного списка)
Но теперь у меня есть еще одна проблема, теперь мой listview покажет мне только последний добавленный элемент.
У меня не было этой проблемы до того, как я захотел отфильтровать listview. Так что, может быть, я что-то упустил.
Чтобы отфильтровать свой listview я просто написал этот код:

@Ручная коррекция
охраняемых недействительными методы onStart() {
супер.методы onStart();

databaseVerktøy.orderByChild("verktøystatus").equalTo("Utlånt").addValueEventListener(новый ValueEventListener() {


@Ручная коррекция
public void onDataChange(DataSnapshot dataSnapshot) {
для (DataSnapshot verktoySnapshot : dataSnapshot.getChildren()) {
listverktoy.понятно();


Verktoy verktoy = verktoySnapshot.getValue(Verktoy.class);

listverktoy.добавить(verktoy);


}

listVerktoy adapter = new listVerktoy(Verktoyliste.this, listverktoy);
lvverktøylistealt.setAdapter(адаптер);



}

@Ручная коррекция
public void onCancelled(DatabaseError databaseError) {

Member 13644629

Я все исправил :)