我的代码需要帮助。请告诉我如何显示当前登录用户输入的数据。比如,过滤数据,如果一个用户上传数据,他/她只能看到她/他的数据,而不能看到其他人(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数据库中的数据,但是,它会显示所有数据。
答案 0 :(得分:0)
用于向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);
通过这种读写方式,只有登录用户才能看到他们的数据