【问题标题】:Image url passing null value to another Intent将空值传递给另一个 Intent 的图像 url
【发布时间】:2015-11-18 18:34:03
【问题描述】:

我已经在我的应用程序中实现了 RecyclerView,并在 Recycler View 上设置了一个 onClickListener。文本字段已成功通过,但是我在 recyclerview 中也有一个图像,它是通过 picasso 带来的。所以我尝试检索存储在另一个类中的图像 url,但我得到一个空值。

代码是:

package xyz.xyz;

import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Typeface;
import android.media.Image;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.NetworkImageView;
import com.squareup.picasso.Picasso;

import org.w3c.dom.Text;

import java.util.ArrayList;
import java.util.List;


public class FlatSearchCardAdapter extends RecyclerView.Adapter<FlatSearchCardAdapter.ViewHolder> {


private Context context;
private ImageLoader imageLoader;
List<FlatCardItemReturn> flatlistCard;




public FlatSearchCardAdapter(List<FlatCardItemReturn> flatlistCard, Context context){
    super();
    //Getting all the superheroes
    this.flatlistCard = flatlistCard;
    this.context = context;
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View v = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.flatrenter_list_item, parent, false);
    ViewHolder viewHolder = new ViewHolder(v);
    return viewHolder;
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {

    FlatCardItemReturn flatcarditemreturn =  flatlistCard.get(position);






    Picasso.with(context).load(flatcarditemreturn.getImageUrl()).placeholder(R.drawable.loadingpicasso).error(R.drawable.errorpicasso).resize(100, 100).into(holder.imageView);


    holder.textViewId.setText(flatcarditemreturn.getId());
    holder.textViewType.setText(flatcarditemreturn.getType());

    holder.textViewFurnishing.setText(flatcarditemreturn.getFurnishing());
    holder.textViewArea.setText(flatcarditemreturn.getArea());
    holder.textViewPrice.setText(flatcarditemreturn.getPrice());
    holder.textViewNumberofrooms.setText(flatcarditemreturn.getNumberofrooms());








}

@Override
public int getItemCount() {
    return flatlistCard.size();
}

public static class  ViewHolder extends RecyclerView.ViewHolder{



    public ImageView imageView;
    public TextView textViewType;
    public TextView textViewPrice;
    public TextView textViewFurnishing;
    public TextView textViewArea;
    public TextView textViewNumberofrooms;
    public TextView textViewId;

    public FlatCardItemReturn flatcarditemreturn = new FlatCardItemReturn();






    public ViewHolder(View itemView) {
        super(itemView);





        textViewId = (TextView) itemView.findViewById(R.id.id);
        imageView = (ImageView) itemView.findViewById(R.id.flatphoto);
        textViewType = (TextView) itemView.findViewById(R.id.type);
        textViewFurnishing = (TextView) itemView.findViewById(R.id.furnishing);
        textViewArea = (TextView) itemView.findViewById(R.id.area);
        textViewPrice = (TextView) itemView.findViewById(R.id.price);
        textViewNumberofrooms = (TextView) itemView.findViewById(R.id.numberofrooms);





        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(v.getContext(), flatrenterpostview.class);
                i.putExtra("idvalue", textViewId.getText().toString());
                i.putExtra("typevalue", textViewType.getText().toString());
                i.putExtra("furnishingvalue", textViewFurnishing.getText().toString());
                i.putExtra("areavalue", textViewArea.getText().toString());
                i.putExtra("pricevalue", textViewPrice.getText().toString());
                i.putExtra("numberofroomsvalue", textViewNumberofrooms.getText().toString());
                i.putExtra("imageurl", flatcarditemreturn.getImageUrl());








                v.getContext().startActivity(i);

            }
        });


    }


}
}

我很困惑如何在其中设置位置,以获得正确的值。如果有人可以帮助我,将不胜感激。 只是为了说清楚, i.putExtra("imageurl", flatcarditemreturn.getImageUrl());什么都不给。我希望 url 存储在我的班级中。网址保存完好,我检查了。

【问题讨论】:

  • 如果那是一个适配器......你的位置在哪里? itemView 到目前为止没有任何位置。

标签: java php android sql android-volley


【解决方案1】:

为了清楚起见,i.putExtra("imageurl", flatcarditemreturn.getImageUrl()); 什么都不给。我希望 url 存储在我的班级中

那你为什么要在你的ViewHolder 中创建一个新的FlatCardItemReturn?这一行:

public FlatCardItemReturn flatcarditemreturn = new FlatCardItemReturn();

您需要将正确的数据项设置为ViewHolder,而不是实例化一个新的“空”数据项。您可以通过向ViewHolder 添加方法来轻松完成此操作:

public void setData(FlatCardItemReturn item) {
    flatcarditemreturn = item;
}

现在,只需通过 onBindViewHolder() 拨打此电话:

@Override
public void onBindViewHolder(ViewHolder holder, int position) {

    FlatCardItemReturn flatcarditemreturn =  flatlistCard.get(position);

    // other stuff omitted

    holder.setData(flatcarditemreturn);
}

您现在也可以更改:

public FlatCardItemReturn flatcarditemreturn = new FlatCardItemReturn();

进入:

public FlatCardItemReturn flatcarditemreturn;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-25
    • 1970-01-01
    • 2014-02-24
    • 1970-01-01
    相关资源
    最近更新 更多