【问题标题】:How to pass adapter to another activity screen?如何将适配器传递到另一个活动屏幕?
【发布时间】:2017-11-02 20:30:04
【问题描述】:

我正在尝试使用以下代码将 Gson 对象传递给意图,并将其发送到另一个活动以获取详细信息。我试图在评论中使用这条指令中的代码,但仍然出错..(How to pass gson serialised object to Intent in android?

这是我的代码:

public class CustomListAdapter extends ArrayAdapter<Beer> {


    Context context;
    int layoutResourceId;
    public List<Beer> data = null;


   public CustomListAdapter(Context context, int resource, List<Beer> objects) {
        super(context, resource, objects);

        this.context = context;
        this.layoutResourceId = resource;
        this.context = context;
        this.data = objects;

    }

    static class DataHolder
    {
        ImageView ivBeer;
        TextView tvBeerName;
        TextView tvDescription;
        TextView abv;
    }

    @NonNull
    @Override
    public View getView(int position, View convertView, ViewGroup parent)
    {

        DataHolder holder = null;

        if (convertView == null)
        {
            LayoutInflater inflater = ((Activity) context).getLayoutInflater();
            convertView = inflater.inflate(layoutResourceId, parent,false);
            holder = new DataHolder();

            holder.ivBeer = (ImageView) convertView.findViewById(R.id.ivBeer);
            holder.tvBeerName = (TextView) convertView.findViewById(R.id.tvBeerName);
            holder.tvDescription = (TextView) convertView.findViewById(R.id.tvDescription);
            holder.abv = (TextView) convertView.findViewById(R.id.abv);

            convertView.setTag(holder);
        }

        else
        {
            holder = (DataHolder) convertView.getTag();
        }

        Beer beer=data.get(position);

        holder.tvBeerName.setText(beer.name);
        Picasso.with(context).load(beer.imageUrl).into(holder.ivBeer);
        holder.tvDescription.setText(beer.description);
        holder.abv.setText(beer.abv);


// this is the trouble part: 

        Gson gson = new Gson();
            Intent intent = new Intent (CustomListAdapter.this, BeerDetailActivity.class);
            intent.putExtra("obj", gson.toJson(data));


        return convertView;

    }
}

【问题讨论】:

  • 请提供日志,以便社区可以看到错误并提供输入。
  • 错误:(103, 25) 错误:没有找到适合 Intent(CustomListAdapter,Class) 的构造函数 Intent.Intent(String,Uri) 不适用(参数不匹配;CustomListAdapter 不能转换为字符串)构造函数 Intent.Intent(Context,Class>) 不适用(参数不匹配;CustomListAdapter 无法转换为 Context)

标签: android


【解决方案1】:

如果您想将data 对象传递给另一个活动BeerDetailActivity,您必须“调用”此活动以开始:

context.startActivity(intent);

就在该行之后:

intent.putExtra("obj", gson.toJson(data));

但是我不确定在您的 adaptergetView 方法中这样做是否正确

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-22
    • 2017-01-07
    • 2019-07-10
    • 2023-01-11
    • 2022-12-07
    • 1970-01-01
    相关资源
    最近更新 更多