【问题标题】:cannot data parse to another activity from RecyclerView item click, using putExtra method无法使用 putExtra 方法从 RecyclerView 项目单击将数据解析到另一个活动
【发布时间】:2018-06-02 17:56:41
【问题描述】:

我想通过单击 RecyclerView 项目并使用 putExtra 方法将 RecyclerView 数据解析到另一个活动。 在哪里显示 Toast 消息和意图另一个活动,但不解析数据。

我不明白这个问题! 请!!!帮帮我....

这里是 DataAdapter 类,

DataAdapter.java

public class DataAdapter extends android.support.v7.widget.RecyclerView.Adapter<DataAdapter.DataViewHolder>{
Context ctx;
List<DataModel> dataModelList;


public DataAdapter(Context ctx, List<DataModel> dataModelList) {
    this.ctx = ctx;
    this.dataModelList = dataModelList;
}

@Override
public DataViewHolder onCreateViewHolder( ViewGroup parent, int viewType) {
    LayoutInflater inflater = LayoutInflater.from(ctx);
    View view = inflater.inflate(R.layout.row_township_union,null);
    return new DataViewHolder(view,dataModelList);
}

@Override
public void onBindViewHolder(DataViewHolder holder, final int position) {
    final DataModel dataModel = dataModelList.get(position);

    holder.textViewUnion.setText(dataModel.getTownship_union());


}

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


class DataViewHolder extends android.support.v7.widget.RecyclerView.ViewHolder{
    TextView textViewUnion;
    List<DataModel> dataModelList;
    CardView cardView;


    public DataViewHolder(View itemView, List<DataModel> data) {
        super(itemView);
        dataModelList = data;
        textViewUnion = itemView.findViewById(R.id.tvUnion);
        cardView = itemView.findViewById(R.id.card);

        cardView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int position = getAdapterPosition();

                Toast.makeText(ctx, "clicked !", Toast.LENGTH_LONG).show();
                Intent  i= new Intent(ctx, AreaSelect.class);
                i.putExtra("key",dataModelList.get(position));
                ctx.startActivity(i);
            }
        });
    }
}

}

这里是 DataModel 类,

DataModel.java

public class DataModel implements Parcelable {
String township_union;

public DataModel(String township_union) {
    this.township_union = township_union;
}

public String getTownship_union() {
    return township_union;
}

public void setTownship_union(String township_union) {
    this.township_union = township_union;
}


@Override
public int describeContents() {
    return 0;
}

@Override
public void writeToParcel(Parcel dest, int flags) {
    dest.writeString(this.township_union);
}

protected DataModel(Parcel in) {
    this.township_union = in.readString();
}

public static final Parcelable.Creator<DataModel> CREATOR = new Parcelable.Creator<DataModel>() {
    @Override
    public DataModel createFromParcel(Parcel source) {
        return new DataModel(source);
    }

    @Override
    public DataModel[] newArray(int size) {
        return new DataModel[size];
    }
};

}

AreaSelect.java

public class AreaSelect extends AppCompatActivity {
TextView textView;
String union;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_area_select);

    textView = findViewById(R.id.tvUnion);

    Bundle extras = getIntent().getExtras();
    union = extras.getString("key");

    textView.setText(union);
}

}

【问题讨论】:

  • 你成功了吗?
  • 我实现了这段代码,但没有解析数据
  • 你试过哪一个?
  • 我也给了 DataModel union = extras.getParcelable("key");
  • 创建 DataModel 实例

标签: android android-recyclerview onitemclicklistener


【解决方案1】:

根据您发布的内容,您正在尝试检索一个字符串,但您在活动的附加内容中发布了一个 parcelable:

i.putExtra("key",dataModelList.get(position));

所以这个:

Bundle extras = getIntent().getExtras(); 
union = extras.getString("key");

应该是:

 Bundle extras = getIntent().getExtras(); 
 DataModel union = extras.getParcelable("key");

如果您想保留原始代码,则可以从模型中发布属性:

i.putExtra("key",dataModelList.get(position).getTownship_union());

【讨论】:

  • 问题解决了!!!通过从模型类中删除“Parcelable”。谢谢:)
  • 太好了,很高兴你得到它:)
猜你喜欢
  • 2014-10-13
  • 2017-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-17
  • 1970-01-01
相关资源
最近更新 更多