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>
Erhalten Sie Fehler in Ihren Protokollen? Möglicherweise sind die Arrays, die Sie an den Konstruktor Ihres Adapters übergeben, leer. – ishmaelMakitla
@ishmaelMakitla Die Arrays sind nicht leer, da ich Elemente in MainActivity.java hinzugefügt habe. –
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