【问题标题】:Opening firebase image in a new activity在新活动中打开 Firebase 图像
【发布时间】:2018-07-04 01:19:24
【问题描述】:

这是ImageListActivity,我想在另一个活动中打开图像。 但我不知道如何编码。 我需要一些帮助。

public class ImageListActivity extends AppCompatActivity {

    private DatabaseReference mDatabaseRef;
    private List<ImageUpload> imgList;
    private ListView lv;
    private ImageListAdapter adapter;
    private ProgressDialog progressDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_image_list);
        imgList = new ArrayList<>();
        lv = (ListView) findViewById(R.id.listViewImage);
        //Show progress dialog during list image loading
        progressDialog = new ProgressDialog(this);
        progressDialog.setMessage("Por favor aguarde...");
        progressDialog.show();

        mDatabaseRef = FirebaseDatabase.getInstance().getReference(MainActivity.FB_DATABASE_PATH);
        mDatabaseRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                progressDialog.dismiss();

                //Fetch imagem data from firebase database
                for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
                    //ImageUpload  class require default constructor
                    ImageUpload img = snapshot.getValue(ImageUpload.class);
                    imgList.add(img);
                }
                //Init adapter
                adapter = new ImageListAdapter(ImageListActivity.this, R.layout.image_item, imgList);
                //Set adapter for listview
                lv.setAdapter(adapter);
            }
            @Override
            public void onCancelled(DatabaseError databaseError) {
                progressDialog.dismiss();
            }
        });
    }
}

【问题讨论】:

  • 在另一个活动中打开图像?您不能通过将图像添加到意图 (using putExtra()) 将图像发送到活动,然后在活动启动时打开吗?我敢打赌这会更容易。
  • 是的,但图片来自 firebase 并保留在列表视图中

标签: android listview firebase arraylist firebase-realtime-database


【解决方案1】:

要完成此操作,您可以将图像保存到 putExtra 中,然后从您的其他活动中检索此图像,这样您就可以处理它并在那里做任何您想做的事情:

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.sticky_notes);// your bitmap
ByteArrayOutputStream bs = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 50, bs);
intent.putExtra("byteArray", bs.toByteArray());

在这里,您创建一个带有随机可绘制对象的位图(您可以选择获取图像的方式),然后我将该图像放入带有键“byteArray”的 putExtra 中

在您的其他活动中执行以下操作:

if(getIntent().hasExtra("byteArray")
{
    ImageView imv= new ImageView(this);
    Bitmap bitmap = BitmapFactory.decodeByteArray(getIntent().getByteArrayExtra("byteArray"), 0, getIntent().getByteArrayExtra("byteArray").length);
    imv.setImageBitmap(bitmap);
}

imv 是您的 imageView,您将在其中放置图像。

所以在线ImageUpload img = snapshot.getValue(ImageUpload.class); 您获取图像,然后将该图像放入 putExtra 并将其检索到您的其他活动中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多