![](/img/trans.png)
[英]How to display specific data of current user from firebase to new activity?
[英]How to display data of specific current logged in user in Firebase Database?
我的代码需要帮助。 请告诉我如何显示仅由特定当前登录用户输入的数据。 就像过滤数据一样,如果一个用户上传数据,则他/她只能看到自己的数据,而其他用户则看不到(Firebase数据库)。 这是我的代码:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.Toast;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.timothy.chlogbook1.R;
import java.util.ArrayList;
import java.util.List;
public class Database extends AppCompatActivity {
EditText editTextDate;
EditText editTextName;
EditText editTextMethod;
EditText editTextTopics;
EditText editTextSummary;
Button buttonAdd;
Spinner spinnerGrade;
DatabaseReference databaseLogbook;
ListView listViewLogbook;
List<Logbook> logbookList;
FirebaseUser user;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_database);
databaseLogbook = FirebaseDatabase.getInstance().getReference("Logbook");
editTextDate = (EditText) findViewById(R.id.editTextDate);
buttonAdd = (Button) findViewById(R.id.buttonAdd);
editTextName = (EditText) findViewById(R.id.editTextName);
editTextMethod = (EditText) findViewById(R.id.editTextMethod);
editTextTopics = (EditText) findViewById(R.id.editTextTopics);
editTextSummary = (EditText) findViewById(R.id.editTextSummary);
spinnerGrade = (Spinner) findViewById(R.id.spinnerGrade);
listViewLogbook = (ListView) findViewById(R.id.listViewLogbook);
logbookList = new ArrayList<>();
buttonAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
addLogbook();
}
});
}
@Override
protected void onStart() {
super.onStart();
databaseLogbook.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
logbookList.clear();
for(DataSnapshot logbookSnapshot: dataSnapshot.getChildren()){
Logbook logbook = logbookSnapshot.getValue(Logbook.class);
logbookList.add(logbook);
}
LogbookList adapter = new LogbookList(Database.this, logbookList);
listViewLogbook.setAdapter(adapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
private void addLogbook(){
String date = editTextDate.getText().toString().trim();
String fullname = editTextName.getText().toString().trim();
String grade = spinnerGrade.getSelectedItem().toString();
String method = editTextMethod.getText().toString().trim();
String topics = editTextTopics.getText().toString().trim();
String summary = editTextSummary.getText().toString().trim();
if(!TextUtils.isEmpty(fullname)) {
String id = databaseLogbook.push().getKey();
Logbook logbook = new Logbook(id,date,fullname,grade,method,topics,summary);
databaseLogbook.child(id).setValue(logbook);
Toast.makeText(this, "Logbook Added", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(this, "You should enter your full name", Toast.LENGTH_LONG).show();
}
}
}
因此,在这段代码中,它可以显示Firebase数据库中的数据,但是,它可以显示所有数据。
要将数据写入Firebase:
private void addLogbook(){
String date = editTextDate.getText().toString().trim();
String fullname = editTextName.getText().toString().trim();
String grade = spinnerGrade.getSelectedItem().toString();
String method = editTextMethod.getText().toString().trim();
String topics = editTextTopics.getText().toString().trim();
String summary = editTextSummary.getText().toString().trim();
if(!TextUtils.isEmpty(fullname)) {
// String id = databaseLogbook.push().getKey();
Logbook logbook = new Logbook(date,fullname,grade,method,topics,summary);
String userEmail = UserEmailIdString.replace(".", ",");
databaseLogbook.child(userEmail).setValue(logbook);
Toast.makeText(this, "Logbook Added", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(this, "You should enter your full name", Toast.LENGTH_LONG).show();
}
}
从Firebase读取数据:
String userEmail = UserEmailIdString.replace(".", ",");
databaseLogbook = FirebaseDatabase.getInstance().getReference("Logbook")
.child(userEmail);
通过这种读写方式,只有登录的用户才能看到他们的数据
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.