1

私はテキストを取り込み、ListViewに追加してからイメージを取得しましたが、アダプタ内のアイテムからImageViewを取得してイメージを設定しようとするとnullが返されました。私は間違って何をしていますか?of項目とアダプタからImageViewを取得するときにnullを取得する。どうして?

//AsyncTask For Texts. 
private class pgData extends AsyncTask<String, String, JSONArray> { 

//CODES HERE ARE WORKING FINE... 

    protected void onPostExecute(JSONArray result) { 

     //CODES HERE ARE WORKING FINE... 

     lv = (ListView) findViewById(R.id.listView); 
     lv.setAdapter(adapter); 
     new Image().execute();//Executing Async Task For Image 
    } 
} 

//AsyncTask For Image. 
private class Image extends AsyncTask<String, String, JSONArray> { 

     //CODES HERE ARE WORKING FINE... 

    protected void onPostExecute(JSONArray result) { 
      String img; 
      ImageView imv; 
      l = result.length(); 
      JSONObject jsonObject; 
      for (int i = 0; i < l; i++) { 
       try { 
        jsonObject = result.getJSONObject(i); 
        img = "\n" + jsonObject.getString("image1") + "\n"; 
        rawImage=Base64.decode(img, Base64.DEFAULT); 
        bmp = BitmapFactory.decodeByteArray(rawImage, 0, rawImage.length); 

        imv=adapter.getItem(i).imageview; //Getting null in imv 
        imv.setImageBitmap(bmp); //Thus this creates null pointer exception 

        adapter.notifyDataSetChanged(); 
       } catch (Exception e) { 
        Toast.makeText(getBaseContext(), e.toString(), Toast.LENGTH_LONG).show(); 
       } 
      } 
    } 
} 
+0

アダプタコード –

+0

はPhanVă[email protected]ご提示ください:アダプターのコードを追加しました。 –

+0

abクラスのコードも入れてください – jaibatrik

答えて

0

PiccassoやUniversalImageLoaderなどの画像をダウンロードするために別のライブラリを使用することをお勧めします。

+0

私の画像はサーバからではなくデータベースから直接送られてきます。 PiccassoにはURLが必要です。つまり、imageはサーバー上にある必要があります。画像をダウンロードすることは私にとって問題ではありません。私はイメージを置く必要があるImageViewを取得していません。 –

+0

こんにちはRahul、私はあなたがイメージのために別のダウンロードをしていると思った、申し訳ありません。 これをデータベースに格納している場合は、abAdapterでロードできませんか? –

+0

テキストと画像を一緒にアダプターに追加すると機能しますが、画像が取り込まれるまでUIを空白にしてしまいます。 そのため、テキストとイメージを別々に取得しているため、イメージを取得した後にアダプタを更新する必要があります。しかし、そうするために、アダプタの中にあるImageViewを取得する必要があります。 –

1

私はついにそれを手に入れました! の代わりに:

imv=adapter.getItem(i).imageview; 

コードがなければならない:

imv = (ImageView) lv.getChildAt(i).findViewById(R.id.image1); 
関連する問題