【发布时间】:2020-10-29 16:57:27
【问题描述】:
我正在为我的学习制作一个 Android 应用程序。这是关于婴儿作为新父母的一般帮助。我有一个登录和注册,带有 recyclerview 的婴儿列表和应用程序的其他部分。我制作了一个集合,但每个新用户都可以看到相同的集合。如何更改我的代码为他们创建一个新集合,以防止看到您不拥有的婴儿?下面的代码是带有 recyclerview 的婴儿列表,您可以在其中选择婴儿进入下一个屏幕。该集合只在这里,也许我应该在登录活动的某个地方创建它,但我不知道如何编辑它。我正在看教程,但它并没有真正帮助。
package com.example.babycare.activity;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.ItemTouchHelper;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import com.example.babycare.model.Child;
import com.example.babycare.adapter.ChildAadpter;
import com.example.babycare.R;
import com.firebase.ui.firestore.FirestoreRecyclerOptions;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.firebase.firestore.CollectionReference;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.Query;
public class babyList extends AppCompatActivity {
private FirebaseFirestore db = FirebaseFirestore.getInstance();
private CollectionReference childbookRef = db.collection("Children");
private ChildAadpter adapter;
private TextView nameView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_baby_list);
FloatingActionButton buttonAddChild = findViewById(R.id.button_add_child);
buttonAddChild.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(babyList.this, NewChildActivity.class));
}
});
/* FloatingActionButton buttonHelp = findViewById(R.id.button_help);
buttonHelp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(babyList.this, HelpActivity.class));
}
}); */
setUpRecyclerView();
}
private void setUpRecyclerView() {
Query query = childbookRef.orderBy("age", Query.Direction.DESCENDING);
FirestoreRecyclerOptions<Child> options = new FirestoreRecyclerOptions.Builder<Child>()
.setQuery(query, Child.class)
.build();
adapter = new ChildAadpter(options);
RecyclerView recyclerView = findViewById(R.id.recycler_view);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(adapter);
new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0,
ItemTouchHelper.LEFT) {
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
adapter.deleteChild(viewHolder.getAdapterPosition());
}
}).attachToRecyclerView(recyclerView);
adapter.setOnItemClickListener(new ChildAadpter.OnItemClickListener() {
@Override
public void onItemClick(DocumentSnapshot documentSnapshot, int position) {
nameView = findViewById(R.id.timeSlept);
Intent intent = new Intent(babyList.this, SelectionMenu.class);
startActivity(intent);
Toast.makeText(babyList.this, "Child " + position, Toast.LENGTH_SHORT).show();
}
});
}
@Override
protected void onStart() {
super.onStart();
adapter.startListening();
}
@Override
protected void onStop() {
super.onStop();
adapter.stopListening();
}
}
和登录活动
package com.example.babycare.activity;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.example.babycare.R;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
public class LoginActivity extends AppCompatActivity {
public EditText loginEmailId, logInPassword;
Button buttonLogIn;
FirebaseAuth firebaseAuth;
private FirebaseAuth.AuthStateListener authStateListener;
private TextView forgotPassword;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
forgotPassword = (TextView) findViewById(R.id.forgotPassword);
forgotPassword.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity( new Intent(LoginActivity.this, ForgotPassword.class));
}
});
TextView buttonSignIn = findViewById(R.id.buttonSignIn);
buttonSignIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(LoginActivity.this, RegisterActivity.class));
}
});
firebaseAuth = FirebaseAuth.getInstance();
loginEmailId = findViewById(R.id.inputEmail);
logInPassword = findViewById(R.id.inputPassword);
buttonLogIn = findViewById(R.id.buttonLogin);
authStateListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
Toast.makeText(LoginActivity.this, "User logged in ", Toast.LENGTH_SHORT).show();
Intent I = new Intent(LoginActivity.this, WelcomeActivity.class);
startActivity(I);
}else {
Toast.makeText(LoginActivity.this, "Login to continue", Toast.LENGTH_SHORT).show();
}
}
};
buttonLogIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String userEmail = loginEmailId.getText().toString();
String userPassword = logInPassword.getText().toString();
if (userEmail.isEmpty()) {
loginEmailId.setError("Provide your Email first!");
loginEmailId.requestFocus();
}else if (userPassword.isEmpty()) {
logInPassword.setError("Enter Password!");
logInPassword.requestFocus();
}else if (userEmail.isEmpty() && userPassword.isEmpty()) {
Toast.makeText(LoginActivity.this, "Fields empty!", Toast.LENGTH_SHORT).show();
}else if (! (userEmail.isEmpty() && userPassword.isEmpty())) {
firebaseAuth.signInWithEmailAndPassword(userEmail, userPassword).addOnCompleteListener(LoginActivity.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (!task.isSuccessful()) {
Toast.makeText(LoginActivity.this, "Not sucessfull", Toast.LENGTH_SHORT).show();
}else {
startActivity(new Intent(LoginActivity.this, WelcomeActivity.class));
}
}
});
}else {
Toast.makeText(LoginActivity.this, "Error", Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
protected void onStart() {
super.onStart();
firebaseAuth.addAuthStateListener(authStateListener);
}
}
注册活动
package com.example.babycare.activity;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.example.babycare.R;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
public class RegisterActivity extends AppCompatActivity {
public EditText emailId, password, password2;
Button buttonRegistration;
FirebaseAuth firebaseAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
TextView buttonAlreadyHaveAnAccount = findViewById(R.id.alreadyHaveAccount);
buttonAlreadyHaveAnAccount.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(RegisterActivity.this, LoginActivity.class));
}
});
firebaseAuth = FirebaseAuth.getInstance();
emailId = findViewById(R.id.inputEmail);
password = findViewById(R.id.inputPassword);
password2 = findViewById(R.id.inputConfirmPassword);
buttonRegistration = findViewById(R.id.buttonRegister);
buttonRegistration.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String inputEmail = emailId.getText().toString();
String inputPassword = password.getText().toString();
String inputPasswordConfirm = password2.getText().toString();
if (inputEmail.isEmpty()) {
emailId.setError("Provide your Email first!");
emailId.requestFocus();
} else if (inputPassword.isEmpty()) {
password.setError("Set your password");
password.requestFocus();
}else if (inputPasswordConfirm.isEmpty()) {
password2.setError("Confirm your password");
password2.requestFocus();
}else if(inputEmail.isEmpty() && inputPassword.isEmpty()) {
Toast.makeText(RegisterActivity.this, "Fields Empty!", Toast.LENGTH_SHORT).show();
}else if (! (inputEmail.isEmpty() && inputPassword.isEmpty() && inputPasswordConfirm.isEmpty())) {
firebaseAuth.createUserWithEmailAndPassword(inputEmail, inputPassword).addOnCompleteListener(RegisterActivity.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(!task.isSuccessful()) {
Toast.makeText(RegisterActivity.this.getApplicationContext(), "SignUp unsuccessful: "+ task.getException().getMessage(),Toast.LENGTH_SHORT).show();
}else {
startActivity(new Intent(RegisterActivity.this, WelcomeActivity.class));
}
}
});
}else {
Toast.makeText(RegisterActivity.this, "Error", Toast.LENGTH_SHORT).show();
}
}
});
}
}
【问题讨论】:
标签: java android-recyclerview google-cloud-firestore