0
我想要一个列表视图来显示具有自定义列表的数组,但是当我运行该应用程序时,列表视图变为空白。没有显示list_item.xml的TextView或Image。CustomList适配器不是TextView和ImageView
这里是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);
}
}
这里是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;
}
}
这里是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>
在日志中是否有错误?它可能是你传递给你的Adapter的构造函数的数组是空的。 – ishmaelMakitla
@ishmaelMakitla数组并非空,因为我在MainActivity.java中添加了项目 –
您可以通过显示“CustomList”构造函数中每个数组的长度来确认数组是否具有值 - 只显示用户和imageUrl数组的长度。另外,只是好奇,你为什么使用TableLayout来处理你的list_item XML? – ishmaelMakitla