【发布时间】:2016-02-26 05:43:56
【问题描述】:
int i=0;
ArrayList<String> list;
queryRef.addChildEventListener(new ChildEventListener() {
public void onChildAdded(DataSnapshot snapshot, String previousChild) {
Map<String, Object> value = (Map<String, Object>) snapshot.getValue();
String name1 = String.valueOf(value.get("Base64String"));
**list = new ArrayList<String>();
list.add(name1);**
System.out.println("Base64 " + i++ +" "+ name1 );
**System.out.println("1 "+list.toString());**
}
此侦听器每次获取值并打印例如:在下面的输出中,i 值会递增,直到所有值都从 firebase 获取。
控制台输出:
Base64 0 basfbjksdvkjvskjvbskdj
1 basfbjksdvkjvskjvbskdj
Base64 1 dvfjovbfdjbsklcnsalcks
1 dvfjovbfdjbsklcnsalcks
Base64 2 dvbjsvfbvjksdkvbsdvjkb
1 dvbjsvfbvjksdkvbsdvjkb
Base64 3 qdncwe98yfecbsdjcksbdv
1 qdncwe98yfecbsdjcksbdv
我必须使用这个 base64 字符串并显示图像。如果只有一个 base64 字符串,下面是用于将 base64 字符串显示为图像的代码。问题是 String name1 每次检索时都会更改,因此必须在放置第一个 base64 字符串后更改 imageview。在从 firebase 获取下一个 base64 字符串之前,我不知道如何移动到另一个 imageview。
使用 firebase base64 字符串的 imageview 代码
byte[] imageAsBytes = Base64.decode(name1.getBytes(), Base64.DEFAULT);
image.setImageBitmap(BitmapFactory.decodeByteArray(imageAsBytes, 0,imageAsBytes.length) );
如果我使用上面的代码,因为每次 name1 中的值发生变化,它都不起作用。我该怎么做。
已编辑:
这是我指的链接 http://www.androidinterview.com/android-custom-listview-with-image-and-text-using-arrayadapter/
此链接包含
String[] itemname ={
"Safari",
"Camera",
"Global",
"FireFox",
"UC Browser",
"Android Folder",
"VLC Player",
"Cold War"
};
Integer[] imgid={
R.drawable.pic1,
R.drawable.pic2,
R.drawable.pic3,
R.drawable.pic4,
R.drawable.pic5,
R.drawable.pic6,
R.drawable.pic7,
R.drawable.pic8,
};
对于上述输入,我必须替换我的输入。但是我的图像在 base64 字符串中,但示例使用的是 Interger 数组。我该怎么做。
下面是它在列表中存储base64字符串和在list1中存储员工姓名的代码
name1 = String.valueOf(value.get("Path"));
name2 = String.valueOf(value.get("Name"));
list.add( name1);
list1.add(name2);
在下面的代码中,我将列表值存储在字符串数组中,然后将它们捆绑发送,以使用输入来显示员工的姓名和图片,而不是 itemname 和 imgid。
spath = list.toArray(new String[list.size()]);
sname = list1.toArray(new String[list1.size()]);
Bundle bundle =new Bundle();
bundle.putStringArray("names",sname);
bundle.putStringArray("paths",spath);
Intent ilist = new Intent(getApplicationContext(),MActivity.class);
startActivity(ilist);
提取数据:
String itemname[]=bundle.getStringArray("names");
String abcd[]=bundle.getStringArray("paths");
【问题讨论】:
-
您是尝试在列表视图中显示这些图像还是尝试在已创建的图像视图中显示它
-
@vishwa 已创建图像视图
-
如果有可能使用 listview 解决这个问题,请告诉我该怎么做
-
我需要澄清一下你是否确认从 firebase 收到的 base64 字符串是静态的,我的意思是计数
-
我正在通过获取员工姓名、电话号码并拍摄员工照片来注册员工,它将被发送到 firebase 进行存储,图像存储为 base64 字符串。在 android 应用程序中有一个名为“查看员工”的选项,如果单击该选项,则所有员工图片(即 base64 图像字符串必须从 firebase 显示中检索为像画廊一样的图像。添加新员工时,计数会有所不同。
标签: java android imageview firebase