3.6
3月6日(星期三)
• 所花时间:2
• 代码行数:273
• 博客容量:1
• 代码如下:
package pages;
import android.app.AlertDialog;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.hui.testend.R;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.List;
import entity.MyDataBase;
import entity.Post;
import entity.PostDao;
import entity.User;
import entity.UserDao;
import utils.MyApplication;
import utils.PostAdapter1;
import utils.Utils;
public class PostContent extends AppCompatActivity {
private static final int CHOOSE_PICTURE = 0;
private static final int TAKE_PICTURE = 1;
private Uri tempUri;
private ImageView imgPostImage;
private ImageView imgReplyImage; // Ensure this is initialized
private byte[] replyImageBytes;
private PostDao postDao;
private Post mainPost;
private List<Post> replies;
private ListView lvReplies;
private PostAdapter1 postAdapter;
private EditText edReplyContent;
private int postId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_post_posts);
postDao = MyDataBase.getDB(this).getPostDao();
lvReplies = findViewById(R.id.lv_replies);
edReplyContent = findViewById(R.id.ed_reply_content);
TextView tvUsername = findViewById(R.id.tv_username);
TextView tvPostTitle = findViewById(R.id.tv_post_title);
TextView tvPostContent = findViewById(R.id.tv_post_content);
imgPostImage = findViewById(R.id.img_post_image);
imgReplyImage = findViewById(R.id.img_reply_image); // Initialize here
Button btnUploadReplyImage = findViewById(R.id.btn_upload_reply_image);
Button btnSubmitReply = findViewById(R.id.btn_submit_reply);
// 获取传递过来的帖子 ID
postId = getIntent().getIntExtra("postId", -1);
mainPost = postDao.queryTheme().stream().filter(post -> post.getPostId() == postId).findFirst().orElse(null);
int userID = mainPost.getUserId();
UserDao userDao = MyDataBase.getDB(this).getUserDao();
User user = userDao.queryById(userID);
if (mainPost != null) {
tvUsername.setText(user.getUsername());
tvPostTitle.setText(mainPost.getTitle());
tvPostContent.setText(mainPost.getContent());
if (mainPost.getImage() != null) {
Bitmap bitmap = BitmapFactory.decodeByteArray(mainPost.getImage(), 0, mainPost.getImage().length);
imgPostImage.setImageBitmap(bitmap);
imgPostImage.setVisibility(View.VISIBLE);
} else {
imgPostImage.setVisibility(View.GONE);
}
}
// 查询所有回复帖
replies = postDao.queryRemark(postId);
postAdapter = new PostAdapter1(this, replies);
lvReplies.setAdapter(postAdapter);
btnUploadReplyImage.setOnClickListener(v -> showChoosePicDialog());
btnSubmitReply.setOnClickListener(v -> handleSubmitReply());
}
private void showChoosePicDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("上传图片");
String[] items = {"选择本地照片", "拍照"};
builder.setNegativeButton("取消", null);
builder.setItems(items, (dialog, which) -> {
switch (which) {
case CHOOSE_PICTURE:
Intent openAlbumIntent = new Intent(Intent.ACTION_GET_CONTENT);
openAlbumIntent.setType("image/*");
startActivityForResult(openAlbumIntent, CHOOSE_PICTURE);
break;
case TAKE_PICTURE:
Intent openCameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
tempUri = Uri.fromFile(new File(getExternalFilesDir(null), "image.jpg"));
openCameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, tempUri);
startActivityForResult(openCameraIntent, TAKE_PICTURE);
break;
}
});
builder.create().show();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
switch (requestCode) {
case TAKE_PICTURE:
setImageToView(tempUri);
break;
case CHOOSE_PICTURE:
setImageToView(data.getData());
break;
}
}
}
private void setImageToView(Uri uri) {
try {
InputStream inputStream = getContentResolver().openInputStream(uri);
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
imgReplyImage.setImageBitmap(bitmap);
imgReplyImage.setVisibility(View.VISIBLE);
replyImageBytes = Utils.bitmapToBytes(bitmap);
} catch (FileNotFoundException e) {
e.printStackTrace();
Toast.makeText(this, "图片处理失败", Toast.LENGTH_SHORT).show();
}
}
private void handleSubmitReply() {
String replyContent = edReplyContent.getText().toString().trim();
if (TextUtils.isEmpty(replyContent)) {
Toast.makeText(this, "请输入回复内容", Toast.LENGTH_SHORT).show();
return;
}
Post replyPost = new Post();
replyPost.setUserId(MyApplication.user.getUserId());
replyPost.setContent(replyContent);
replyPost.setImage(replyImageBytes);
replyPost.setRelatedPostId(mainPost.getPostId());
postDao.insert(replyPost);
Toast.makeText(this, "回复成功", Toast.LENGTH_SHORT).show();
// 刷新回复列表
replies.add(replyPost);
postAdapter.notifyDataSetChanged();
edReplyContent.setText("");
imgReplyImage.setImageBitmap(null);
imgReplyImage.setVisibility(View.GONE);
replyImageBytes = null;
}
}
浙公网安备 33010602011771号