我已经能够从Parse中提取字符串数据并将其设置为textviews但是我无法获取图像文件并将其设置在imageview中,我尝试使用Byte方法但是没有成功并且得到错误data.length。继承我的代码:
parseFloat
用于通过意图在列表视图中显示的代码:
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);
}
}
});
}
}
答案 0 :(得分:0)
此源代码似乎可以从文件中加载图像:
Bitmap bitmap = BitmapFactory.decodeFile(pathToImage);
Bitmap和BitmapFactory类位于 android.graphics包中:
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
假设您的图像路径正确,您可以将此位图图像添加到ImageView中,如下所示:
ImageView imageView = (ImageView) getActivity().findViewById(R.id.imageView);
imageView.setImageBitmap(BitmapFactory.decodeFile(pathToPicture));
点数 - http://alvinalexander.com/source-code/android/android-how-load-image-file-and-set-imageview
答案 1 :(得分:0)
您可以使用Glide库从服务器加载图像,如下所示: -
Glide
// For the glide libraray
compile 'com.github.bumptech.glide:glide:3.7.0'
像这是您的Imageview,您可以使用进度条显示从服务器加载图像
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ProgressBar
android:id="@+id/YOUR_PROGRESSBAR"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_centerInParent="true"
/>
<ImageView
android:id="@+id/YOUR_IMAGEVIEW"
android:layout_width="match_parent"
android:layout_height="120dp"
android:textColor="@android:color/black"
android:layout_centerInParent="true"
android:visibility="invisible"
android:src="@drawable/bubble1" />
</RelativeLayout>
在你的Activity/Fragment
中使用这行代码
YOUR_PROGRESSBAR.setVisibility(View.VISIBLE);
Glide.with(mContext)
.load("your_server_url")
.fitCenter()
.crossFade()
.listener(new RequestListener<String, GlideDrawable>() {
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
if (e instanceof UnknownHostException)
YOUR_PROGRESSBAR.setVisibility(View.GONE);
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
YOUR_PROGRESSBAR.setVisibility(View.GONE);
YOUR_IMAGEVIEW.setVisibility(View.VISIBLE);
return false;
}
}).into(YOUR_IMAGEVIEW);;