2012-03-28 5 views
0

jsonを使用して、mysqlデータベースからURLを介してイメージと名前を取得しています。私はリストビューで画像を見ることができます。しかし名前はありません。私は私がandroidのベースアダプタを使用しているリストビューでカスタムレイアウトを作成する際にエラーが発生しました

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    <ImageView 
    android:id="@+id/image" 
    android:layout_width="50dip" 
    android:layout_height="50dip" android:src="@drawable/stub"  
android:scaleType="centerCrop"/> 
<TextView 
    android:id="@+id/text" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" android:textSize="20dip" 
    android:layout_marginLeft="10dip"/> 
</LinearLayout> 

getViewメソッド内でカスタムビューを作成したいmethod.but私のコードを参照してくださいlogcat..pleaseにエラーを表示し、自分のコードを編集し、それを表示cusotom作成私に送って

public class ImageAdapter extends BaseAdapter { 
private static final Context Context = null; 
String qrimage; 
Bitmap bmp, resizedbitmap; 
Activity activity = null; 
private static LayoutInflater inflater = null; 

private ImageView[] mImages; 
String[] itemimage; 
TextView[] tv; 
String itemname; 
HashMap<String, String> map = new HashMap<String, String>(); 

public ImageAdapter(Context context, JSONArray imageArrayJson) { 
    this.mImages = new ImageView[imageArrayJson.length()]; 

    try { 

     for (int i = 0; i < imageArrayJson.length(); i++) { 
      JSONObject image = imageArrayJson.getJSONObject(i); 
      qrimage = image.getString("itemimage"); 
      itemname = image.getString("itemname"); 
      map.put("itemname", image.getString("itemname")); 
      System.out.println(itemname); 

      byte[] qrimageBytes = Base64.decode(qrimage.getBytes()); 

      bmp = BitmapFactory.decodeByteArray(qrimageBytes, 0, 
        qrimageBytes.length); 
      int width = 100; 
      int height = 100; 
      resizedbitmap = Bitmap.createScaledBitmap(bmp, width, height, 
        true); 

      mImages[i] = new ImageView(context); 
      mImages[i].setImageBitmap(resizedbitmap); 

      mImages[i].setScaleType(ImageView.ScaleType.FIT_START); 

      inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      // tv[i].setText(itemname); 
     } 

    } catch (Exception e) { 
     // TODO: handle exception 
    } 
} 

public int getCount() { 
    return mImages.length; 
} 

public Object getItem(int position) { 
    return position; 
} 

public long getItemId(int position) { 
    return position; 
} 
public class ViewHolder { 
     TextView text; 
    } 


public View getView(int position, View convertView, ViewGroup parent) { 



// return mImages[position]; 
     ViewHolder holder = new ViewHolder(); 
     if (convertView == null){ 
      convertView = inflater.inflate(R.layout.listview, null); 
      holder.text = (TextView)convertView.findViewById(R.id.text); 

      convertView.setTag(holder); 
     }else{ 
      holder = (ViewHolder)convertView.getTag(); 
     } 

     holder.text.setText(map.get("itemname")); 
     return convertView; 
    } 


} 

レイアウトXML imageviewとitemnameのmimagesをtextviewに追加します。最後に、リストビューとしてmimagesとitemnameを追加したい

+0

てみては? Logcatの出力を示します。 –

+0

nullポインタ例外が表示され、エラー行が表示されます。convertView = inflater.inflate(R.layout.listview、null); – Vinoth

+0

私はリストビューで画像を表示できます。 getviewメソッドでmimages [posstion]を返します。今私はlistviewでmimagesとitemnameを表示したい。私のコードを編集して私に送ってください – Vinoth

答えて

0

JSONArrayではなくString ArrayをImageAdapterクラスに渡すことをお勧めします。 setAdapterを呼び出す前にすべての値を取得し、String配列に格納して渡します。それに応じてImageAdapterクラスを変更する必要があります。

+0

JSONArray json = jArray.getJSONArray( "names"); \t \t \t list =(ListView)findViewById(R.id.list); \t \tアダプター=新しいImageAdapter(this、json); \t \t list。setAdapter(adapter);.私はjsonを渡すことができれば、私は得ることができない他の賢明なデータベースから画像を得ることができます。ここでは文字列値は画像アダプタ – Vinoth

1
  1. プライベート静的LayoutInflaterインフレータ= nullを、

    をステートメントを使用しないでください。

だけのために...ループとのtry {} catchブロック内のインフレータを入れないでください

private static LayoutInflater inflater; 
  1. のままにしておきます。例外がスローされた場合、インフレータは初期化されません。

  2. コンストラクタ自体の最初の行でインフレータを初期化します。あるいは使用

  3. インフレータ= LayoutInflater.from(コンテキスト)。あなたのコンストラクタで

  1. は、あなたがハッシュマップを作成する方法を確認し、その誤りました。
  2. あなたの所有者は、getView()のTextViewと共に更新する必要があるImageviewが必要です。
+0

yaに渡すことはありません。これは働いていますリストビューにmimagesとitemnameを追加する方法 – Vinoth

+0

私のmimagesとitemnameにviを追加する方法を再生してください。リストビューの画像とリストビューのテキストが必要です..再生してください – Vinoth

+0

カスタムListViewを使用する方法。チュートリアルではsrrayアダプターの使用法について説明していますが、概念を理解するのに役立ちます。 http://www.shubhayu.com/android/listview-with-arrayadapter-and-customized-items – Shubhayu

1

は、それがLogcatに示してどのようなエラー

convertView = activity.getLayoutInflater().inflate(R.layout.listview, null); 
+0

表示エラーでgetlayoutinflator – Vinoth

+0

あなたの活動オブジェクトを試してみてください –

関連する問題