2016-05-29 13 views
0

Ich möchte eine Listview anzeigen, was in Arrays mit einer benutzerdefinierten Liste ist aber die Listview wird leer, wenn ich die App ausführen. Weder die TextView noch das Image der list_item.xml werden angezeigt. HierCustomList-Adapter nicht TextView und ImageView

ist MainActivity.java

public class MainActivity extends Activity { 

    ListView list; 
    List<Integer> users = new ArrayList<Integer>(); 
    List<String> imageId = new ArrayList<String>(); 

    Integer[] userNames; 
    String[] imageUrls; 

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

     users.add(50); 
     imageId.add("https://color.adobe.com/build2.0.0-buildNo/resource/img/kuler/color_wheel_730.png"); 


     userNames = new Integer[users.size()]; 
     userNames = users.toArray(userNames); 

     imageUrls = new String[imageId.size()]; 
     imageUrls = imageId.toArray(imageUrls); 

     CustomList adapter = new 
       CustomList(MainActivity.this, userNames, imageUrls); 


     list=(ListView)findViewById(R.id.listView); 
     list.setAdapter(adapter); 

    } 
} 

Und hier ist CustomList.java:

public class CustomList extends ArrayAdapter<String> { 

    private final Activity context; 
    private final Integer[] userNames; 
    private final String[] imageUrl; 


    static class ViewHolderItem { 
     TextView textViewItem; 
    } 

    public CustomList(Activity context, 
         Integer[] users, String[] imageUrl) { 
     super(context, R.layout.list_item); 
     this.context = context; 
     this.userNames = users; 
     this.imageUrl = imageUrl; 

    } 

    static class ViewHolder{ 
     TextView userName; 
     ImageView image; 
    } 


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

     LayoutInflater inflater = context.getLayoutInflater(); 
     View rowView= inflater.inflate(R.layout.list_item, null, true); 

     ViewHolder holder; 

     if(convertView == null){ 
      convertView = LayoutInflater.from(context).inflate(R.layout.list_item, null); 
      holder = new ViewHolder(); 

      holder.userName = (TextView)convertView.findViewById(R.id.userName); 
      holder.image = (ImageView)convertView.findViewById(R.id.img); 

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


     holder.userName.setText(String.valueOf(userNames[position])); 
     Picasso.with(context).load(imageUrl[position]).resize(1000, 1000).centerInside().into(holder.image); 

     return convertView; 

    } 
} 

Hier ist list_item.xml:

<?xml version="1.0" encoding="utf-8"?> 
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 

    <TextView android:id="@+id/userName" android:padding="10dp"/> 

    <ImageView 
     android:id="@+id/img" 
     android:tag="@string/app_name" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:adjustViewBounds="true" 
     android:scaleType="fitCenter" 
     /> 
</TableLayout> 
+0

Erhalten Sie Fehler in Ihren Protokollen? Möglicherweise sind die Arrays, die Sie an den Konstruktor Ihres Adapters übergeben, leer. – ishmaelMakitla

+0

@ishmaelMakitla Die Arrays sind nicht leer, da ich Elemente in MainActivity.java hinzugefügt habe. –

+0

Könnten Sie bestätigen, dass die Arrays Werte haben, indem Sie die Länge jedes einzelnen in Ihrem 'CustomList'-Konstruktor zeigen - zeigen Sie einfach die Länge der Benutzer und imageUrl-Arrays an. Auch, nur neugierig, warum verwenden Sie TableLayout für Ihre XML-List_item? – ishmaelMakitla

Antwort

0

einfach diese Zeile in der Custom hinzufügen .klasse

@Override 
public int getCount() { 
    return userNames.length; 
} 

Auch habe ich festgestellt, dass es in der TextView keine Breite und Höhe gibt.

Verwandte Themen