从Parse加载图像并在imageView中设置

时间:2017-02-17 13:56:04

标签: java android parsing imageview pfobject

我已经能够从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);
            }
        }


    });
}
}

2 个答案:

答案 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

的Gradles条目
// 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);;