从firebase填充第二个活动列表视图

时间:2017-06-22 05:22:39

标签: android listview firebase android-activity layout

我知道这个问题被多次询问但是我无法理解它并且我想要将数据从火基地填充到第二个活动而不是第一个而且我没有一个类但是它是简单的编辑文本所以每当人们填写并单击编辑文本,文本将保存在firebase上,listview上的第二个活动将填充firebase数据 谢谢你,我不希望listview在主要活动中,但我想进入仅包含listview的第二个活动。

这是我的代码,

    public class MainActivity extends AppCompatActivity {
    EditText ed;
        Button b,b2;
        ArrayList<String>aded;
        String save,pus;
        // Write a message to the database
         FirebaseDatabase database ;
       DatabaseReference myRef ;
        DatabaseReference ref;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            ed=(EditText)findViewById(R.id.ed1);
            b=(Button)findViewById(R.id.b1);
            b2=(Button)findViewById(R.id.b2);
            database = FirebaseDatabase.getInstance();
            myRef = database.getReference("message");
            ref=database.getReference("Oslan");



    b2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            save= ed.getText().toString();
            if(!TextUtils.isEmpty(save)) {
                pus = ref.push().getKey();
                ref.child(pus).setValue(save);
                //myRef.setValue(save);
            }else{
                Toast.makeText(getApplicationContext(),"put name",Toast.LENGTH_LONG).show();
            }
        }
    });
           // databaseArtist=FirebaseDatabase.getInstance().getReference("artist");

            aded=new ArrayList<>();
    b.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           save= ed.getText().toString();
            aded.add(save);
            if(!TextUtils.isEmpty(save)) {
                pus = myRef.push().getKey();
                myRef.child(pus).setValue(save);
                //myRef.setValue(save);
                }else{
                Toast.makeText(getApplicationContext(),"put name",Toast.LENGTH_LONG).show();
            }
            Intent i=new Intent(getApplicationContext(),Listview.class);
            i.putStringArrayListExtra("n",aded);
            startActivity(i);
        }
    });
        }


    }




    public class Listview extends AppCompatActivity {
     ListView listi;
        ArrayList<String>items;
     ArrayAdapter<String>adapt;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_listview);
            listi=(ListView)findViewById(R.id.l1);
            items=new ArrayList<>();
            Intent gett=getIntent();
            items=gett.getStringArrayListExtra("n");
            adapt=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,items);
            listi.setAdapter(adapt);
        }


    }

并列出活动代码,谢谢你的帮助

    public class Listview extends AppCompatActivity {
     ListView listi;
        ArrayList<String>items;
     ArrayAdapter<String>adapt;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_listview);
            listi=(ListView)findViewById(R.id.l1);
            items=new ArrayList<>();
            Intent gett=getIntent();
            items=gett.getStringArrayListExtra("n");
            adapt=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,items);
            listi.setAdapter(adapt);
        }


    }

2 个答案:

答案 0 :(得分:0)

您可以在两个活动中获得对数据库节点的引用。将此添加到您的两个活动中:

DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference().child("name_of_child");

然后在你的第一个活动中:

databaseReference.setValue(editText.getText().toString());

在你的第二项活动中:

String name;

databaseReference.addValueEventListener(new ValueEventListener)
    {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
        //get value from snapshot
        name = dataSnapshot.getValue(String.class);
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        //Log the error
    }

}

答案 1 :(得分:-1)

 public void onDataChange(DataSnapshot dataSnapshot) {
     for(DataSnapshot dt:dataSnapshot.getChildren()){
         name = dt.getValue(String.class);
         items.add(name);
     } adapt=new ArrayAdapter<>(getApplicationContext(),android.R.layout.simple_list_item_1,items);
     listi.setAdapter(adapt);
 }

谢谢Krishan回答了我的问题,我正在和

打成一片