android 实现评论代码
时间: 2023-12-20 10:03:46 浏览: 29
要在 Android 应用程序中实现评论功能,需要涉及以下步骤:
1. 创建一个后端服务器来存储评论数据。
2. 在 Android 应用程序中创建一个界面,供用户输入评论内容。
3. 当用户提交评论时,将评论数据发送到后端服务器进行存储。
4. 在 Android 应用程序中创建一个界面,以显示所有已提交的评论。
以下是一个示例评论代码的实现。在这个示例中,我们将使用 Firebase 作为后端服务器来存储评论数据。
1. 配置 Firebase 数据库和认证:
在 Firebase 控制台中创建一个新项目并启用 Firebase 数据库和 Firebase 认证。在您的 Android 应用程序中添加 Firebase SDK,并在代码中初始化 Firebase。
2. 创建一个模型类来表示评论:
```
public class Comment {
private String id;
private String text;
private String authorId;
public Comment() {}
public Comment(String id, String text, String authorId) {
this.id = id;
this.text = text;
this.authorId = authorId;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getAuthorId() {
return authorId;
}
public void setAuthorId(String authorId) {
this.authorId = authorId;
}
}
```
3. 在应用程序中创建一个界面,供用户输入评论内容:
在 XML 布局文件中添加一个 EditText 和一个 Button 控件,用于输入评论和提交评论。在 Java 代码中,使用 Firebase 认证获取当前用户的 ID,并在用户点击提交按钮时将评论数据保存到 Firebase 数据库中。
```
public class CommentActivity extends AppCompatActivity {
private EditText commentEditText;
private FirebaseAuth mAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_comment);
mAuth = FirebaseAuth.getInstance();
commentEditText = findViewById(R.id.commentEditText);
Button submitButton = findViewById(R.id.submitButton);
submitButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String commentText = commentEditText.getText().toString().trim();
if (!commentText.isEmpty()) {
String userId = mAuth.getCurrentUser().getUid();
String commentId = FirebaseDatabase.getInstance().getReference().push().getKey();
Comment comment = new Comment(commentId, commentText, userId);
FirebaseDatabase.getInstance().getReference().child("comments").child(commentId).setValue(comment);
commentEditText.setText("");
}
}
});
}
}
```
4. 在应用程序中创建一个界面,以显示所有已提交的评论:
在 XML 布局文件中添加一个 RecyclerView 控件,用于显示评论。在 Java 代码中,使用 Firebase 数据库获取所有评论数据,并使用 RecyclerView.Adapter 将评论数据绑定到 RecyclerView 上。
```
public class CommentsActivity extends AppCompatActivity {
private RecyclerView commentsRecyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_comments);
commentsRecyclerView = findViewById(R.id.commentsRecyclerView);
commentsRecyclerView.setLayoutManager(new LinearLayoutManager(this));
DatabaseReference commentsRef = FirebaseDatabase.getInstance().getReference().child("comments");
commentsRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
List<Comment> comments = new ArrayList<>();
for (DataSnapshot commentSnapshot : dataSnapshot.getChildren()) {
Comment comment = commentSnapshot.getValue(Comment.class);
comments.add(comment);
}
CommentsAdapter adapter = new CommentsAdapter(comments);
commentsRecyclerView.setAdapter(adapter);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {}
});
}
private static class CommentsAdapter extends RecyclerView.Adapter<CommentViewHolder> {
private final List<Comment> comments;
CommentsAdapter(List<Comment> comments) {
this.comments = comments;
}
@NonNull
@Override
public CommentViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_comment, parent, false);
return new CommentViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull CommentViewHolder holder, int position) {
Comment comment = comments.get(position);
holder.commentTextView.setText(comment.getText());
}
@Override
public int getItemCount() {
return comments.size();
}
}
private static class CommentViewHolder extends RecyclerView.ViewHolder {
private final TextView commentTextView;
CommentViewHolder(View itemView) {
super(itemView);
commentTextView = itemView.findViewById(R.id.commentTextView);
}
}
}
```
以上代码示例中,`CommentActivity` 和 `CommentsActivity` 分别对应于评论输入界面和评论显示界面。当用户在 `CommentActivity` 中输入评论并提交时,评论数据将保存到 Firebase 数据库中。当用户在 `CommentsActivity` 中打开评论界面时,将从 Firebase 数据库中获取所有评论数据并显示在 RecyclerView 中。