0

我正在编写一个读取 XML 文件并将其显示为 ListView 的应用程序,因为每一行都有自己的图像和文本我正在使用 LayoutInflater,我可以显示文本但无法显示图像!这是我用于 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;
    }
}

values 和 values2 是来自 XML Parser 的 ArrayList!实际上,它们没问题,因为我打印了它们的内容并在 LogCat 中看到它们!在我的 Activit 中,我使用它来调整 ImageAdapter

setListAdapter(new ImageAdaptertwo(this, imagelink,texts));

结果是一个带有文本但没有图像的列表视图!谁能告诉我如何解决这个问题并在 ListView 上显示 XML 内容?

通过将 if 语句更改为 Switch Case 来解决问题。现在对于每一行我都有特定的数字

4

2 回答 2

1

好吧,基本上你的 if - else 有问题。字符串比较没有像您预期的那样发生。确保在 JAVA 中检查任何涉及 equals,equalsignorecase 的代码两次。字符串比较是不必要的复杂。此外,您还可以使用 switch 代替 if-else,让您的生活更轻松一点。要从在线获取图像,您必须在后台线程上获取图像,然后在主线程上显示。看到这个寻求帮助:http ://android-developers.blogspot.in/2009/05/painless-threading.html

类似问题:无法显示网址图片(位图)

于 2012-10-23T15:28:23.837 回答
0

通过将 if 语句更改为 Switch Case 来解决问题。现在对于每一行我都有特定的图像

于 2012-10-23T14:52:55.960 回答