【发布时间】:2020-01-01 01:50:31
【问题描述】:
我一直在尝试将图像(ParseFile 类型)从适配器传递到另一个活动。由于它是 ParseFile,因此我无法使用 (getIntent().getIntExtra("image", 0);) 之类的正常方式将图像检索到活动中。如果您能指出如何进行的正确方向,将不胜感激。谢谢。
试图从这个适配器(PostsAdapter)传递图像
@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {
final Post post = posts.get(position);
holder.bind(post);
final ParseFile image = post.getImage();
holder.rlPost.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(context, DetailActivity.class);
i.putExtra("image", image);
i.putExtra("description", post.getDescription());
context.startActivity(i);
}
});`
进入这个活动(DetailActivity)
public class DetailActivity extends AppCompatActivity {
ImageView ivImageD;
Post post = new Post();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
ivImageD = findViewById(R.id.ivImageD);
ParseFile image = post.getImage();
Glide.with(this).load(image.getUrl()).into(ivImageD);
}}
解决方案
我没有从 PostsAdapter 传递 Image,而是将 objectId(在 Parse 服务器上找到)作为字符串传递并使用它来检索 Image。
在 PostsAdapter 中
i.putExtra("objectId", post.getObjectId());
在DetailActivity中
String objectId = getIntent().getStringExtra("objectId");
ParseQuery<Post> query = ParseQuery.getQuery(Post.class);
query.setCachePolicy(ParseQuery.CachePolicy.CACHE_ELSE_NETWORK);
query.getInBackground(objectId, new GetCallback<Post>() {
public void done(Post item, ParseException e) {
if (e == null) {
Log.i(TAG, "Item Found");
image = item.getImage();
Glide.with(DetailActivity.this).load(image.getUrl()).into(ivImageD);
}
else{
Log.i(TAG, "Item not Found");
}
}
});
【问题讨论】:
标签: android android-intent android-activity android-adapter