2017-04-12 99 views
0

我想从Firebase数据库中设置图片url的值来查看,但没有找到结果。我认为对于一个普通的firebase程序员来说非常容易。请帮助我。如何从Firebase回收站适配器设置图片的值?

这里是我的代码:

Veglist.java

public static class VegViewHolder extends RecyclerView.ViewHolder { 

    public View mView; 
    private ImageView postImage; 
    private TextView quantityBox,postVegName,postPrice,postPriceTag; 
    private ImageButton reducequantityButton,increaseQuantityButton; 
    private Button add; 
    private String mPostKey=null; 
    String totalCost; 


    public VegViewHolder(final View itemView) { 
     super(itemView); 
     mView = itemView; 


     add=(Button)mView.findViewById(R.id.add); 
     quantityBox=(TextView)mView.findViewById(R.id.quantity); 
     reducequantityButton = (ImageButton) mView.findViewById(R.id.downQuantitybutton); 
     increaseQuantityButton = (ImageButton) mView.findViewById(R.id.upQuantitybutton); 
       cartobject.child("Name").setValue(postVegName.getText().toString().trim()); 
cartobject.child("Image").setValue(postImage.toString()); cartobject.child("Price").setValue(postPrice.getText().toString().trim()); cartobject.child("PriceTag").setValue(postPriceTag.getText().toString().trim()); cartobject.child("Quantity").setValue(quantityBox.getText().toString()); 

       totalCost = String.valueOf(Integer.parseInt(quantityBox.getText().toString()) * Integer.parseInt(postPrice.getText().toString())); 

       cartobject.child("Total").setValue(totalCost).addOnSuccessListener(new OnSuccessListener<Void>() { 
        @Override 
        public void onSuccess(Void aVoid) { 
         p.dismiss(); 
         Toast.makeText(mView.getContext(), postVegName.getText().toString().trim() + " successfully added to cart! ", Toast.LENGTH_SHORT).show(); 
         add.setText("Added"); 
         add.setBackgroundColor(Color.parseColor("#FF5625D2")); 


        } 

       }); 
      } 
     }); 





    } 

    public void setName(String name) { 
     postVegName = (TextView) mView.findViewById(R.id.vegName); 
     postVegName.setText(name); 

    } 

    public void setPrice(String price) { 
     postPrice = (TextView) mView.findViewById(R.id.VegPrice); 
     postPrice.setText(price); 


    } 

    public void setPriceTag(String priceTag) 
    { 
     postPriceTag=(TextView)mView.findViewById(R.id.PriceTag); 
     postPriceTag.setText(priceTag); 
    } 

    public void setImage(Context context, String image) { 
     postImage = (ImageView) mView.findViewById(R.id.VegImg); 
     Picasso.with(context).load(image).into(postImage); 
    } 






} 

public void setUpVegAdapter(final Query reference) { 

    vegRecyclerAdapter = new FirebaseRecyclerAdapter<Veg, VegViewHolder> 
      (

        Veg.class, 
        R.layout.row_layout_veg, 
        VegViewHolder.class, 
        mainReference 
      ) 

    { 
     @Override 
     protected void populateViewHolder(final VegViewHolder viewHolder, final Veg model, int position) { 


      try { 


       viewHolder.setName(model.getName()); 
       viewHolder.setPrice(model.getPrice()); 
       viewHolder.setPriceTag(model.getPriceTag()); 
       viewHolder.setImage(getApplicationContext(), model.getImage()); 


      } catch (Exception e) { 
       Log.e("start error", "useless"); 
      } 


     } 


    }; 


} 

我应该用什么形象?

cartobject.child("Image").setValue(??????????); 
+0

如果图像来自URL,为什么不存储URL? – Sunshinator

+0

你能告诉我如何存储图像的URL?以上是我的代码.. – Suresh

+0

假设'ref'是'FirebaseReference',你希望URL是'url','url'是'String',你想要保存的图像的URL,你可以写'ref.setValue (url);' – Sunshinator

回答

-1

如果你知道图片的网址从ImageView的 只是做

cartObject.child("image).setValue(urlOfImage.tostring) 

如果您而从手机上传第一你可以这样做

首先加入这个

public Uri resultUri=null; 
private ImageView postImage; 

Then Second Initialise

postImage=(ImageView) findViewById(R.id.postImage); 

三setOnclickListner为ImageView的

postImage.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       CropImage.startPickImageActivity(this); 
      } 
     }); 

那么你就

@Override 
    @SuppressLint("NewApi") 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if (requestCode == CropImage.PICK_IMAGE_CHOOSER_REQUEST_CODE && resultCode == AppCompatActivity.RESULT_OK) { 

     Uri imageUri = CropImage.getPickImageResultUri(this, data); 
     CropImage.activity(imageUri) 
       .setGuidelines(CropImageView.Guidelines.ON) 
       .start(this); 
     Log.d(TAG, "After image select"); 
    } 
    if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) { 
     CropImage.ActivityResult result = CropImage.getActivityResult(data); 
     if (resultCode == RESULT_OK) { 
      resultUri = result.getUri(); 
      profilepic.setImageURI(resultUri); 
     } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) { 
      Exception error = result.getError(); 
     } 
     Log.d(TAG, "After image crop"); 
    } 
} 

public void uploadImage() { 

    StorageReference riversRef = mStorageRef.child(resultUri.getLastPathSegment()); 

    riversRef.putFile(resultUri) 
      .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { 
       @Override 
       public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { 
        // Get a URL to the uploaded content 
        postImageUrlToString = taskSnapshot.getDownloadUrl().toString(); 

        cartObject.child("image").setValue(postImageUrlToString) 


       } 
      }) 
      .addOnFailureListener(new OnFailureListener() { 
       @Override 
       public void onFailure(@NonNull Exception exception) { 
        // Handle unsuccessful uploads 
        // ... 
        // updateUserData(nametext.getText().toString(),getUriToDrawable(ProfileActivity.this, R.drawable.ic_account_black_56dp)); 

       } 
      }); 
} 

您可能需要这种依赖性

compile 'com.theartofdev.edmodo:android-image-cropper:2.3.+' 
+0

请重新格式化您的问题,现在它全部显示为'code'。 –

0

推荐的方法做,这是使用Glide并传入照片网址。

Firebase Android Codelab有一个如何在step 7(为glide做一个ctrl + f)的例子。

相关问题