2012-03-28 5 views
0

Ich hole die Bilder und Namen von MySQL-Datenbank über die URL mit Json. Ich kann die Bilder in der Listenansicht sehen, aber nicht Namen. Ich möchte benutzerdefinierte Ansicht erstellen innerhalb der GetView method.but cusotom es Fehler, die mein Code sehen in logcat..please zeigen erstellen anzuzeigen und zu meinen Code bearbeiten, um mich sendenFehler beim Erstellen benutzerdefiniertes Layout während ListView mit Basis-Adapter in Android

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; 
    } 


} 

Layout-xml

<?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> 

I möchte die mimages in imageview und itemname an textview anhängen. schließlich möchte ich mimages und itemname als listview

+0

welche Fehler es in Logcat zeigt? zeigt uns die Logcat-Ausgabe. –

+0

zeigt Nullzeiger exception.and zeigt Fehlerzeile convertView = inflater.inflate (R.layout.listview, null); – Vinoth

+0

Ich kann Bilder in Listview anzeigen. gib mimages [posstion] in der getview-Methode zurück. jetzt möchte ich mimages und itemname in listview anzeigen. Bitte bearbeiten Sie meinen Code und senden Sie mir – Vinoth

Antwort

0

Ich empfehle Ihnen, String Array statt JSONArray an die ImageAdapter-Klasse übergeben. Holen Sie alle Werte, bevor Sie setAdapter aufrufen, speichern Sie sie im String-Array und übergeben Sie sie. Sie müssen die ImageAdapter-Klasse entsprechend ändern.

+0

JSONArray json = jArray.getJSONArray ("names"); \t \t \t Liste = (ListView) findViewById (R.id.list); \t \t Adapter = neuer ImageAdapter (dies, json); \t \t Liste.setAdapter (Adapter) ;. wenn ich JSON nur übergeben kann, kann ich Bilder von der Datenbank bekommen, die andere weise ich nicht bekommen kann. Hier ist kein String-Wert vorhanden, der an den Image-Adapter – Vinoth

1
  1. Sie die Anweisung nicht verwenden,

    private static LayoutInflater inflater = null;

lassen Sie es einfach als

private static LayoutInflater inflater; 
  1. nicht den Inflator in der für setzen Sie ... Schleife und der try {} catch-Block. Wenn es eine Ausnahme auslöst, wird der Inflator nicht initialisiert.

  2. Initialisieren Sie den Inflator in der ersten Zeile des Konstruktors.

  3. Alternativ Gebrauch

    inflater = LayoutInflater.from (Kontext);

In Ihrem Konstruktor

  1. Überprüfen Sie die Art und Weise Sie die hashmap schaffen, seine irrtümliche.
  2. Ihr Halter benötigt ein Imageview, das Sie zusammen mit Ihrem TextView in getView() aktualisieren müssen.
+0

ya übergeben wird. das funktioniert .. wie man mimages und itemname an listview anfügt – Vinoth

+0

bitte wiederholen wie ich vi zu meinen mimages und itemname hinzufüge .. ich will listview mimages und text in listview .. bitte wiederholen – Vinoth

+0

Gehen Sie durch diese Anleitung, wie Sie benutzerdefinierte ListViews verwenden . Obwohl das Tutorial die Verwendung von srray adapter erklärt, wird es Ihnen helfen, das Konzept zu bekommen. http://www.shubhayu.com/android/listview-with-arrayadapter-and-customized-items – Shubhayu

1

Versuch mit

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

getlayoutinflator in Show-Fehler – Vinoth

+0

versuchen Sie mit Ihrer Aktivität Objekt –

Verwandte Themen