2016-07-18 10 views
0

.net Webサービスからデータを取得しようとしています。私はthisのようなjsonの応答を得ています。しかし、イメージを取得してイメージビューに設定できません。私がしたコーディングは以下の通りです。解決策を教えてくださいデータベースから画像を取得してlistviewに表示する方法は?

public class DisplayList extends ListActivity { 

    private static final String TAG_CATEGORY = "main_name"; 
    private static final String TAG_SUBCAT = "cat_name"; 
    private static final String TAG_CODE = "code"; 
    private static final String TAG_NAME = "name"; 
    private static final String TAG_RATE = "rate"; 
    private static final String TAG_RATE2 = "rate2"; 
    private static final String TAG_RATE3 = "rate3"; 
    private static final String TAG_IMAGE = "img"; 

    ArrayList<DetailsVO> mListCustomerDetails = null; 
    ArrayList<HashMap<String, String>> productlist; 

    String subc; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_display_list); 

     productlist = new ArrayList<HashMap<String, String>>(); 

     Bundle extras = getIntent().getExtras(); 
     if (extras != null) { 
      subc = extras.getString("Subcat"); 
     } 

     new AsyncCallSoap1().execute(); 
     productlist.clear(); 
    } 

    public class AsyncCallSoap1 extends AsyncTask<String,Void,String> { 
     private final ProgressDialog dialog=new ProgressDialog(DisplayList.this); 

     //String tal_on=taluka.getText().toString(); 

     @Override 
     protected String doInBackground(String... params) { 
      CallSoap com=new CallSoap(); 
      String SOAP_ACTION="http://tempuri.org/IprotechService/SelectSuCatgeory"; 
      String OPERATION_NAME="SelectSuCatgeory"; 
      String response = com.getDetails(OPERATION_NAME,SOAP_ACTION); 

      if(response!=null){ 
       try { 

        JSONArray array1 = new JSONArray(response); 

        for(int i=0;i<array1.length();i++) 
        { 
         JSONObject obj1 = array1.getJSONObject(i); 
         String out_category = obj1.getString(TAG_CATEGORY); 
         String out_subcat = obj1.getString(TAG_SUBCAT); 
         String out_code = obj1.getString(TAG_CODE); 
         String out_name = obj1.getString(TAG_NAME); 
         String out_rate = obj1.getString(TAG_RATE); 
         String out_rate2 = obj1.getString(TAG_RATE2); 
         String out_rate3 = obj1.getString(TAG_RATE3); 
         String out_img = obj1.getString(TAG_IMAGE); 
         // Toast.makeText(DetailsList.this, categoryId, Toast.LENGTH_LONG).show(); 

         if(subc.equalsIgnoreCase(out_subcat)){ 
          HashMap<String, String> details = new HashMap<String, String>(); 
          details.put(TAG_NAME,out_name); 
          details.put(TAG_RATE,"Rs. "+out_rate); 
          details.put(TAG_IMAGE,out_img); 

          productlist.add(details); 
         } 
        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } 
      return response; 
     } 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      //Showing progress dialog 
      dialog.setMessage("Please wait..."); 
      dialog.setCancelable(false); 
      dialog.show(); 
     } 

     @Override 
     protected void onPostExecute(String result) { 
      super.onPostExecute(result); 
      dialog.dismiss(); 

      ListAdapter adapter = new SimpleAdapter(
        DisplayList.this, productlist, 
        R.layout.row_layout, new String[] {TAG_IMAGE, TAG_NAME, TAG_RATE,}, 
        new int[] { R.id.imageView2,R.id.textView2, 
          R.id.textView3}); 

      // contactList.notifyDataSetChanged(); 
      setListAdapter(adapter); 
     } 
    } 
} 
+0

はあなたの画像のURLは完全修飾です。 –

+0

あなたの応答には「NAME.jpg」があります。ここに記載されているベースURLはありません。 イメージビューにハッシュタグ値を取得するコードを指定できますか。 – Sujewan

+0

@Mayurサーバーから画像を取得するためにPicassoまたはGlideを試してみてください。このリンクをご覧ください:https://github.com/codepath/android_guides/wiki/Displaying-Images-with-the-Picasso-Library and this:https://github.com/bumptech/glide – Sushrita

答えて

1

画像のルートフォルダは何ですか?

それは次のようになります。 「http://domain.com/images/

を、あなただけのイメージ名CONCATます:

String image_name = "toy.png" 
String image_url = "http://domain.com/images/"+image_name; 

、あなたのイメージビューにピカソや負荷イメージの他の方法を使用します。

Picasso.with(context) 
    .load(image_url) 
    .resize(50, 50) 
    .centerCrop() 
    .into(imageView) 
+0

OK。ありがとうございます –

0

あなたのgradleにグライドを最初にコンパイルして、アンドロイドの画像ビューで画像を表示します。

compile 'com.github.bumptech.glide:glide:3.7.0' 

アダプターのgetViewメソッドでは、このようなURLから画像を取得します。

ImageView imageView = (ImageView) itemView.findViewById(R.id.imageView); 
GlideDrawableImageViewTarget imageViewTarget = new GlideDrawableImageViewTarget(imageView); 
Glide.with(mContext).load(url).placeholder(R.raw.loading).error(R.drawable.nophoto).into(imageViewTarget); 
+0

ありがとうございます。私はそれを試してみます –

0
  1. あなたのデータベース手段にbyteArrayとしてイメージを持っている場合は、

    • byteArrayが、その後、ビットマップに変換することを受信します。あなたがimage as an url手段を持っている場合は、

      Bitmap bitmap = BitmapFactory.decodeByteArray(byteArray , 0, byteArray.length); 
      
  2. を使用すると、あなたは

これは役立ちます。

関連する問題