Click here to Skip to main content
15,889,335 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
Hi How can I use a Button to filter items by values in 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;
    }
}


What I have tried:

Hi,
I have not tried anything yet, because i'm new to this :)
Posted
Updated 25-Jan-18 16:52pm

1 solution

Everything you need is here.
 
Share this answer
 
Comments
Member 13644629 26-Jan-18 17:32pm    
But this Solution is for filter search. How about when I want to use a Button to filter for example only see countries that has more than .... in population?
David Crow 26-Jan-18 23:31pm    
In response to a button click, see here.
Member 13644629 27-Jan-18 8:24am    
Thank you David, I manage to filter my listview like I wanted. (Not with a Button, but with a filtered listview)
But now I have another problem, now my listview will only show me the last item added.
I didn't have that problem before I wanted to filter the listview. So maybe it's something I missed.
To filter my listview I just wrote this code:

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

databaseVerktøy.orderByChild("verktøystatus").equalTo("Utlånt").addValueEventListener(new ValueEventListener() {


@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot verktoySnapshot : dataSnapshot.getChildren()) {
listverktoy.clear();


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) {
Member 13644629 27-Jan-18 8:50am    
I fixed it :)

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900