使用LayoutFlater的Android | ListView

使用LayoutFlater的Android | ListView,android,xml,listadapter,Android,Xml,Listadapter,我正在编写一个应用程序,它读取XML文件并将其显示为ListView 因为每一行都有自己的图像和文本我正在使用LayoutFlater,我可以显示文本但不能显示图像!这是我用于ImageAdapter的代码: public class ImageAdaptertwo extends ArrayAdapter<String> { private final Context context; private final ArrayList<String> va

我正在编写一个应用程序,它读取XML文件并将其显示为ListView 因为每一行都有自己的图像和文本我正在使用LayoutFlater,我可以显示文本但不能显示图像!这是我用于ImageAdapter的代码:

public class ImageAdaptertwo extends ArrayAdapter<String> {
    private final Context context;
    private final ArrayList<String> values;
    private final ArrayList<String> values2;

    public ImageAdaptertwo(Context context, ArrayList<String> values,ArrayList<String> values2) {
        super(context, R.layout.trimester1_listview, values);
        this.context = context;
        this.values = values;
        this.values2 = values2;

    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        String s = values.get(position);
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View rowView = inflater.inflate(R.layout.trimester1_main, parent, false);
        TextView textView = (TextView) rowView.findViewById(R.id.label2);
        ImageView imageView = (ImageView) rowView.findViewById(R.id.icon2);
        textView.setText(values2.get(position));

        // Change icon based on name
        //String s = values.get(position);

        System.out.println(s);

        if (s.equals(" havingsuccessful-pregnancyS.png")) {
            imageView.setImageResource(R.drawable.n1);
        } else if (s.equals("urfoodguideduringpregnancyS.png")) {
            imageView.setImageResource(R.drawable.n2);
        } else if (s.equals("lovingurpregnantbodyS.png")) {
            imageView.setImageResource(R.drawable.n3);
        } else if (s.equals("gettinggoodbreastafterS.png")) {
            imageView.setImageResource(R.drawable.n4);
        } else if (s.equals("FoodGuidePyramidS.png")) {
            imageView.setImageResource(R.drawable.n5);
        } else if (s.equals("pregnancyS.png")) {
            imageView.setImageResource(R.drawable.n6);
        } else if (s.equals("nutritionfoS.png")) {
            imageView.setImageResource(R.drawable.n7);
        } else if (s.equals("Your-Growing-ChildS.png")) {
            imageView.setImageResource(R.drawable.n8);
        } else if (s.equals("Fatigue-in-first-trimesterS.png")) {
            imageView.setImageResource(R.drawable.n9);
        } else if (s.equals("T1S.png")) {
            imageView.setImageResource(R.drawable.n10);
        }

        return rowView;
    }
}
结果是一个包含文本但没有图像的列表视图! 有人能告诉我如何解决这个问题并在ListView上显示XML内容吗


通过将if语句更改为Switch Case解决了此问题。现在,对于每一行,我都有特定的编号,通过将if语句更改为Switch Case,解决了这个问题。现在,对于每一行,我都有一个特定的图像,这基本上是if-else-then中的一个问题。字符串比较并不像您预期的那样进行。确保在JAVA中检查两次涉及equals、equalsignorecase的代码。字符串比较不必要地复杂。也可以使用开关来代替if-else,让你的生活更轻松一点。 要从联机获取图像,您必须在后台线程上获取图像,然后在主线程上显示。 请参阅此以获取帮助:


类似问题:

在if-else语句中设置默认的else大小写,并设置一些图像,以查看这是图像问题还是if-else问题我认为您的Trimester 1_主布局中可能存在问题。确保布局中可以看到imageview如果您尝试了Slartibartfast给出的建议,那么一定存在一些布局问题…好的,然后试着在你的layout@manindersingh设置默认值刚刚起作用!现在所有的图像都是一样的,但文字不同。。。如果(s.equals(“havingsucccessful pregnacys.png”){imageView.setImageResource(R.drawable.n1);}或者{imageView.setImageResource(R.drawable.n10);}现在我该怎么办?你能显示System.out.println(s)的输出吗@Slartibarfast如果我想展示另一组图片,你有什么评论吗?我该怎么做?!除了创建另一个名为ImageAdapter3的类!我的意思是我有另一个XML文件,它将像这样显示!两个都能有一个适配器吗?XML文件中的图像是不同的……您可能希望有两个图像来分隔这两组ui。如果您希望两者都有一个,您可以添加一个活动构造函数参数,该参数标识您从何处调用它,然后使用它来膨胀适当的XML。或者是两个适配器类都可以实现的接口。很多方面。这实际上取决于你如何看待你的应用程序的架构
setListAdapter(new ImageAdaptertwo(this, imagelink,texts));