2016-03-22 8 views
0

Ich habe benutzerdefinierte Adapter für HashMap, das Problem ist, kann ich TextView von CustomAdapter mit HashMap nicht festlegen. Die vorletzte Zeile erhält Syntax Fehler, HashMap-Position zu bekommen. Bitte führen Sie mich an, wie man Syntaxfehler auflöst und CustomAdapter einstellt.kann HashMap-Position in CustomAdapter nicht abrufen

CustomAdapter.java

public class CustomAdapter extends ArrayAdapter<HashMap<String, Object>> { 

     private SparseBooleanArray mSelectedItemsIds; 
     private LayoutInflater inflater; 
     private Context mContext; 
     private List<HashMap<String, Object>> list; 
     Blocklist blocklist; 

     public CustomAdapter (Context context, int resourceId, List<HashMap<String, Object>> list) { 
      super(context, resourceId, list); 
      mSelectedItemsIds = new SparseBooleanArray(); 
      mContext = context; 
      inflater = LayoutInflater.from(mContext); 
      this.list = list; 
     } 

     private static class ViewHolder { 
      TextView itemName; 
     } 

     public View getView(int position, View view, ViewGroup parent) { 
      final ViewHolder holder; 
      if (view == null) { 
       holder = new ViewHolder(); 
       view = inflater.inflate(R.layout.custom_textview, null); 
       view = inflater.inflate(R.layout.custom_textview, null); 
       holder.itemName = (TextView) view.findViewById(R.id.custom_tv); 
       view.setTag(holder); 
      } else { 
       holder = (ViewHolder) view.getTag(); 
      } 

      holder.itemName.setText(list.get(position)); 
      return view; 
     } 

Blocklist.java

HashMap<String,Object> hm = new HashMap<String,Object>(); 
       hm.put(ID, cursor.getLong(0)); 
       hm.put(ORIGINATING_ADDRESS, cursor.getString(1)); 
       hm.put(MESSAGE_BODY, cursor.getString(2)); 
       arrayList.add(hm); 
       cursor.moveToNext(); 
+0

fügen Sie das Fehlerprotokoll hinzu. –

+0

Warum 2 mal in getView aufpumpen. –

+0

fälschlicherweise @jaydroider –

Antwort

2

Sie haben:

holder.itemName.setText(list.get(position)); 

die obige Zeile wird nicht in einem HashMap-Objekt als list.get(position) Ergebnisse arbeiten und keine Zeichenfolgenobjekt Wenn Sie die MESSAGE_BODY fro Beispiel zeigen wollen, müssen Sie es wie diese auch

holder.itemName.setText((String)list.get(position).get(MESSAGE_BODY)); 

verwenden Sie nicht

view = inflater.inflate(R.layout.custom_textview, null); 

twice`

+0

dank seiner Arbeit eingeben –

0
list.get(position) 

Return das Objekt HashMap aufzublasen müssen position, kein String