个性化适配器在我的Android应用程序中不起作用

时间:2014-06-13 17:22:44

标签: android listview

我正在尝试在我的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();               
        }
    });
}

1 个答案:

答案 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}}合并为一个。