【发布时间】:2017-07-07 02:04:27
【问题描述】:
我已经能够从 Parse 中提取字符串数据并将其设置为 textviews,但我无法获取图像文件并将其设置在 imageview 中,我尝试使用 Byte 方法但没有成功并出现错误数据长度。这是我的代码:
public class mygardenDetail extends Activity {
String name;
//String image;
String kgsays;
String care;
String tips;
String image;
Context context;
ImageLoader imageLoader = new ImageLoader(this);
List<ParseObject> ob;
private List<PlantListitems> plantlist = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Get the view from singleitemview.xml
setContentView(R.layout.mygarden_detail);
//new mygardenDetail.RemoteDataTask().execute();
imageLoader = new ImageLoader(context);
Intent i = getIntent();
// Get the result of rank
name = i.getStringExtra("name");
//Get the result of country
// kgsays = i.getStringExtra("kgsays");
// Get the result of country
//care = i.getStringExtra("care");
// Get the result of population
//tips = i.getStringExtra("tips");
// Get the result of flag
// image = i.getStringExtra("image");
// Locate the TextViews in singleitemview.xml
TextView txtName = (TextView) findViewById(R.id.name);
final TextView txtKGsays = (TextView) findViewById(R.id.KGsays);
final TextView txtCare = (TextView) findViewById(R.id.Care);
final TextView txtTips = (TextView) findViewById(R.id.Tips);
// Locate the ImageView in singleitemview.xml
final ImageView imgflag = (ImageView) findViewById(R.id.image);
//Set values in containers
txtName.setText(name);
imageLoader.DisplayImage(image, imgflag);
ParseQuery query = new ParseQuery<>("Plants2");
query.whereEqualTo("plantName", (name));
query.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> listCountry, ParseException e) {
for (ParseObject country : listCountry) {
// Locate images in flag column
ParseFile image = (ParseFile) country.get("image");
//PlantListitems map = new PlantListitems();
txtKGsays.setText((String) country.get("KGsays"));
txtCare.setText((String) country.get("Care"));
txtTips.setText((String) country.get("tips"));
Bitmap bmp = BitmapFactory.decodeByteArray(data, 0, data.length);
imgflag.setImageBitmap(bmp);
//plantlist.add(map);
//imageLoader.DisplayImage(image, imgflag);
}
}
});
}
}
用于通过意图在列表视图中显示的代码:
// RemoteDataTask AsyncTask
private class RemoteDataTask extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
// Create the array
worldpopulationlist = new ArrayList<WorldPopulation>();
try {
// Locate the class table named "Country" in Parse.com
ParseQuery<ParseObject> query = new ParseQuery<ParseObject>(
"Plants2");
// Locate the column named "ranknum" in Parse.com and order list
// by ascending
query.orderByAscending("plantName");
ob = query.find();
for (ParseObject country : ob) {
// Locate images in flag column
ParseFile image = (ParseFile) country.get("image");
WorldPopulation map = new WorldPopulation();
map.setName((String) country.get("plantName"));
map.setType((String) country.get("type"));
map.setPlot((String) country.get("plotSize"));
map.setImage(image.getUrl());
worldpopulationlist.add(map);
}
} catch (ParseException e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return null;
}
【问题讨论】:
-
您可以使用任何库 Glide、Universal 或 picasso 在 imageview 上显示它
-
请问我该如何实现这个方法?
-
参考这个答案stackoverflow.com/a/39972276/3946958 ...他们用过glide库
-
检查我的以下解决方案,如果有问题请告诉我
-
感谢您的回复,但建议应该容易得多。我正在从 Parse 后端加载数据。
标签: java android parsing imageview pfobject