我正在尝试在我的Android应用程序中使用适配器在我的listView中的项目中添加图像:
这是我的适配器:
public class ItemAdapter extends ArrayAdapter<String> {
private final Context context;
private final String[] Names;
private final int rowResourceId;
public ItemAdapter(Context context, int textViewResourceId, String[] objects) {
super(context, textViewResourceId, objects);
this.context = context;
this.Names = objects;
this.rowResourceId = textViewResourceId;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(rowResourceId, parent, false);
ImageView imageView = (ImageView) rowView.findViewById(R.id.imageFileView);
TextView textView = (TextView) rowView.findViewById(R.id.fileName);
String name = Names[position];
String extFile = Names[position].substring(Names[position].lastIndexOf("."));
textView.setText(name);
String uri = "drawable/"+extFile;
// int imageResource = R.drawable.icon;
//int imageResource = getResources().getIdentifier(uri, null, getPackageName());
// set image to ImageView
Uri imgUri=Uri.parse(uri);
imageView.setImageURI(imgUri);
return rowView;
}
}
我还在我的应用程序中使用另一个适配器来添加pull to刷新到我的listView但是这个适用于。
我认为它不会调用我的“ItemAdapter”导致system.out.print没有显示任何内容
我这样称呼我的适配器:
public void getList(){
client.get(server+"get/files/1"+folderPath, new JsonHttpResponseHandler() {
@Override
public void onSuccess(JSONArray files) {
String[] listeNames=new String[files.length()];
for (int i = 0; i < files.length(); i++) {
try {
listeNames[i]=files.getString(i);
} catch (JSONException e) {
System.err.println("error :"+e.getMessage());
}
}
list_files.setAdapter(new ItemAdapter(mainActivity,android.R.layout.simple_list_item_1,listeNames));
list_files.setAdapter(new ArrayAdapter<String>(mainActivity,android.R.layout.simple_list_item_1,listeNames));
((PullToRefreshListView) list_files).onRefreshComplete();
}
});
}
答案 0 :(得分:1)
ListView
只能有一个Adapter
。问题是你这样做:
list_files.setAdapter(new ItemAdapter(mainActivity,android.R.layout.simple_list_item_1,listeNames));
list_files.setAdapter(new ArrayAdapter<String>(mainActivity,android.R.layout.simple_list_item_1,listeNames));
所以第二个Adapter
会覆盖第一个ItemAdapter
。这就是为什么这个工作完美以及为什么永远不会调用Adapter
的原因。
您应该尝试将这两个{{1}}合并为一个。