0

https://itunes.apple.com/us/app/party-cupcake-recipes-300+/id572480130?mt=8

我想制作一个类似于我上面提供的示例的应用程序。我在 Android 和 Java 上做这件事。我正在使用主菜单的列表视图,它有汤、主菜等。我为菜单上的每个项目构建了一个活动,并在用户点击时打开这个新活动。

例如,soup 活动中有另一个列表视图,它将包含我制作的汤列表,食谱将是我用 Photoshop 构建的图像视图,不会有文本或其他内容。

现在我的问题是我可能会有 50 到 60 个食谱,并且为每个食谱开设一个课程听起来不合逻辑。使用 OOP 逻辑,我应该有一个类,例如配方,并使用配方名称和它的图像视图生成对象。因此,如果需要,我可以生产数百个,这听起来很合乎逻辑。我正在考虑将所有图片存储在资源文件夹中。当我这样做时,我可以只提供图片链接而不将其添加到 xml 文件中。我的意思是我可以使用由配方对象组成的 Arraylist 做一个列表视图,当单击它们时,它会打开它拥有的图像。没有所有这些的 xml 文件,或者根本不可能?所有的帮助将不胜感激......

4

1 回答 1

0

我不知道“所有这些文件的 xml 文件”是什么意思,但您可以通过 BitmapFactory.decodeResource(getResources(), R.drawable.pictureId) 获取图片并在 ImageView 中显示该位图。

public class MySimpleArrayAdapter extends ArrayAdapter<MyImage> {
  private final Context context;
  private final ArrayList<MyImage> values;

  public MySimpleArrayAdapter(Context context, ArrayList<MyImage> values) {
    super(context, R.layout.rowlayout, values);
    this.context = context;
    this.values = values;
  }

  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = (LayoutInflater) context
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View rowView = inflater.inflate(R.layout.rowlayout, parent, false);
    TextView textView = (TextView) rowView.findViewById(R.id.label);
    ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
    textView.setText(values.get(i).getDesc());
    imageView.setImageResource(values.get(position).getImageId());

    return rowView;
  }
} 

public class MyImage{
   String desc;
   int imageId;
}


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <ImageView
        android:id="@+id/icon"
        android:layout_width="22px"
        android:layout_height="22px"
        android:layout_marginLeft="4px"
        android:layout_marginRight="10px"
        android:layout_marginTop="4px" >
    </ImageView>

    <TextView
        android:id="@+id/label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20px" >
    </TextView>

</LinearLayout> 
于 2013-03-08T22:34:36.510 回答