【问题标题】:Retrieving an image from parse.com in a List View using an Array Adapter使用数组适配器在列表视图中从 parse.com 检索图像
【发布时间】:2016-06-10 23:28:21
【问题描述】:

我在 parse.com 上存储了数据。我正在尝试检索图像和字符串并将其放在列表视图中。我有一个适配器,我一直在用它来抓取文本,但不确定如何处理图像。有一条特别需要帮助。

public class AppetizerAdapter extends ArrayAdapter {

protected Context mContext;
protected List mAppetizer;

public AppetizerAdapter(Context context, List appetizer) {
    super(context, R.layout.custom_appetizers, appetizer);

    mContext = context;
    mAppetizer = appetizer;
}

// inflates each row of the app
@Override
public View getView(final int position, View convertView, ViewGroup parent) {

    // initialize view holder
    ViewHolder holder;
    if (convertView == null) { // If no items in the view to be displayed
        convertView = LayoutInflater.from(mContext).inflate(
                R.layout.custom_appetizers, null);

        // initialize the views
        holder = new ViewHolder(); // creates a new view
        holder.aPPetizer = (TextView) convertView // calls the view
                .findViewById(R.id.appetizer);

        holder = new ViewHolder();
        holder.appetizerImage = (ImageView) convertView
                .findViewById(R.id.appetizerImage);

        // call the view and setTag to the parameter (holder)
        convertView.setTag(holder);

    } else { // if view is previously displayed

        // initialize holder
        holder = (ViewHolder) convertView.getTag();

    }

    // get the position of the row
    ParseObject appetizerObject = (ParseObject) mAppetizer.get(position);

    // title
    String appetizers = appetizerObject.getString("appetizers"); 
    holder.aPPetizer.setText(appetizers);

    // image
    ???
    holder.appetizerImage.setImageResource();

    return convertView; // return the view
}

public static class ViewHolder {

    // declaration of variables
    TextView aPPetizer;
    ImageView appetizerImage;

}

我遇到的问题是:

// title
String appetizers = appetizerObject.getString("appetizers");

这允许我将字符串存储在“开胃菜”列中 - 这是一个字符串,但对于图像,我不知道如何编码。

【问题讨论】:

  • 你可以让它显示图片的 URL
  • 你能告诉我怎么做吗?
  • 如何将项目添加到数据库中?通过你的手机?还是手动通过phpMyAdmin?
  • 我在解析它们。服务器是heroku
  • 是的。我不知道那是什么。我会支持您的问题,并希望更多人看到它:)

标签: android listview parse-platform android-arrayadapter


【解决方案1】:

假设您可以从appetizerObject 参考中获取您的图像的 url,您只需从网络下载位图并将其设置为 ImageView 的位图。

虽然有很多方法可以手动实现,但我建议使用库来管理下载和缓存过程。根据我的经验,我使用了以下库:

它们都有一个非常简单(且相似)的 api。

【讨论】:

  • 我试过毕加索。我添加了依赖项: compile 'com.squareup.picasso:picasso:2.5.2' 到 build.gradle。我还添加了 .jar 文件,但后来我收到一个错误,指出它是重复的,我将其删除。不知道在哪里放MAVEN依赖?
  • 对于图像,我添加了另一个视图 (holder.appetizerImage) 和标题代码下方的此代码:Picasso.with(getContext()).load(appObject.getParseFile("imageFiles" ).getUrl()).into(holder.appetizerImageView); -> 给我一个错误:stack=java.lang.NoClassDefFoundError: Failed resolution of: Lcom/squareup/picasso/Picasso;at com.lizg.recipedirectory.AppetizerAdapter.getView(AppetizerAdapter.java:64) 第 64 行是我的代码为以毕加索开头的图像写了...
  • 您使用的是 Android Studio 吗?如果是这样,您只需将 compile 'com.squareup.picasso:picasso:2.5.2' 添加到您的 build.gradle (应用程序级别的)。如果您以这种方式包含 .jar 文件,则无需添加它。
  • 是的,我正在使用 Android Studio。好的,这就是我所做的,但我在从后端服务器检索图像文件时遇到问题
  • 我清理并重建了项目,它现在似乎可以工作了:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-25
  • 2013-06-04
  • 1970-01-01
相关资源
最近更新 更多