androidlistviewadapter

listview is not populating


I am trying to add ratdatalist into the listview in rat_data called ratData but it isn't working, can anyone tell me why?

I am currently making an array list, populating that, and then adding it to the adapter, but it isn't appearing when I run it

public class RatData extends AppCompatActivity implements View.OnClickListener {
ListView ratData;
Button addB;
Button mapB;
private final Activity thisActivity = this;
public static int args;
private DatabaseReference mFirebaseDatabase;
private FirebaseDatabase mFirebaseInstance;
List<String> ratDatalist = new ArrayList<>();

/**
 * automatically read csv file & displays keys
 *
 * @param savedInstanceState bundle object used upon creation
 */

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.rat_data);
    System.out.println("reach here");

    addB = (Button) findViewById(R.id.add);
    mapB = (Button) findViewById(R.id.map);
    addB.setOnClickListener(this);
    mapB.setOnClickListener(this);

    //ratData = (ListView) findViewById(R.id.ratData);



    mFirebaseInstance = FirebaseDatabase.getInstance();
    mFirebaseDatabase = mFirebaseInstance.getReference("rats");
    try {
        DatabaseReference mFirebaseInstance1 = FirebaseDatabase.getInstance().getReference().child("rats");
        mFirebaseInstance1.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                for (DataSnapshot ds : dataSnapshot.getChildren()) {
                    String ratkeysName = (String) ds.getKey();
                    ratDatalist.add(ratkeysName);
                    System.out.println("here");
                }

            }


            @Override
            public void onCancelled(DatabaseError databaseError) {
                throw databaseError.toException(); // don't ignore errors
            }
        });
    } catch(Exception e){

    }
    final ArrayAdapter adapter = new ArrayAdapter<String>(RatData.this,
            R.layout.rat_data, ratDatalist);
    ratData = (ListView) findViewById(R.id.ratData);
    ratData.setAdapter(adapter);
    System.out.println("hello");
   
   }

My problem does reach hello and the list is properly populating, however it simply wont appear in the app.


Solution

  • Your is something like that

    public class RatData extends AppCompatActivity implements View.OnClickListener {
    ListView ratData;
    Button addB;
    Button mapB;
    private final Activity thisActivity = this;
    public static int args;
    private DatabaseReference mFirebaseDatabase;
    private FirebaseDatabase mFirebaseInstance;
    List<String> ratDatalist = new ArrayList<>();
    
    /**
     * automatically read csv file & displays keys
     *
     * @param savedInstanceState bundle object used upon creation
     */
    
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.rat_data);
        System.out.println("reach here");
    
        addB = (Button) findViewById(R.id.add);
        mapB = (Button) findViewById(R.id.map);
        addB.setOnClickListener(this);
        mapB.setOnClickListener(this);
    
    
    final ArrayAdapter adapter = new ArrayAdapter<String>(RatData.this,
                R.layout.rat_data, ratDatalist);
        ratData = (ListView) findViewById(R.id.ratData);
        ratData.setAdapter(adapter);
        System.out.println("hello");
    
    
        mFirebaseInstance = FirebaseDatabase.getInstance();
        mFirebaseDatabase = mFirebaseInstance.getReference("rats");
        try {
            DatabaseReference mFirebaseInstance1 = FirebaseDatabase.getInstance().getReference().child("rats");
            mFirebaseInstance1.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    for (DataSnapshot ds : dataSnapshot.getChildren()) {
                        String ratkeysName = (String) ds.getKey();
                        ratDatalist.add(ratkeysName);
                        System.out.println("here");
                    }
                    adapter.notifyDataSetChanged();
    
                }
    
    
                @Override
                public void onCancelled(DatabaseError databaseError) {
                    throw databaseError.toException(); // don't ignore errors
                }
            });
        } catch(Exception e){
    
        }
    
       }