0

コンソール Firebase でデータベースを変更しようとしましたが、アダプターのデータは変更されませんでした。recylerview は、アプリケーションを閉じて再度開いたときにのみ変更されました

MainActivity.java

public class MainActivity extends AppCompatActivity {

    private List<ModelDB> dbList = new ArrayList<>();
    private AdapterDB adapter;
    private RecyclerView recyclerView;
    FirebaseDatabase database;
    DatabaseReference reference;



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

        initFirebase();
        getData();
        initRecylerView();

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main_menu,menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case R.id.add_person:
                Intent intent = new Intent(getApplicationContext(),RegisterActivity.class);
                startActivity(intent);
                break;
            default:
                Toast.makeText(getApplicationContext(),"lalalala",Toast.LENGTH_LONG).show();
                break;
        }

        return super.onOptionsItemSelected(item);
    }

    private void initFirebase(){
        database = FirebaseDatabase.getInstance();
        reference = database.getReference("user");

    }


    private void initRecylerView(){
        recyclerView = (RecyclerView)findViewById(R.id.rv_list);
        recyclerView.setHasFixedSize(true);
        adapter = new AdapterDB(dbList);
        recyclerView.setAdapter(adapter);
        RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext());
        recyclerView.setLayoutManager(layoutManager);
    }


    private void getData() {
        reference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                //loop data all user
                for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {

                    //instance object to get and set data
                    ModelDB modelDB = postSnapshot.getValue(ModelDB.class);

                    //adding data list from object
                    dbList.add(modelDB);

                }

            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
    }

}

AdapterDB.java

public class AdapterDB extends RecyclerView.Adapter<AdapterDB.MyViewHolder> {

    private List<ModelDB> modelDBList;

    public AdapterDB(List<ModelDB> modelDBList) {
        this.modelDBList = modelDBList;
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_data,parent,false);
        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        ModelDB modelDB = modelDBList.get(position);
        holder.tv_nama.setText(modelDB.getNama());
        holder.tv_alamat.setText(modelDB.getAlamat());

    }

    @Override
    public int getItemCount() {
        return modelDBList.size();
    }

    public class MyViewHolder extends RecyclerView.ViewHolder {

        TextView tv_nama, tv_alamat;

        public MyViewHolder(View itemView) {
            super(itemView);

            tv_nama = (TextView) itemView.findViewById(R.id.tv_nama);
            tv_alamat = (TextView) itemView.findViewById(R.id.tv_alamat);
        }
    }
}
4

1 に答える 1