我想将这些数据从当前活动发送到更多的“ BusInformationsCard”活动。
@Override public void onBindViewHolder(@NonNull ViewHolder viewHolder,最终int位置){
viewHolder.busLineName.setText(tickets.get(position).getBusLine());
viewHolder.seatsNumbers.setText(String.valueOf(tickets.get(position).getSeatNum()));
viewHolder.leavingTime.setText(tickets.get(position).getLeavingTime());
viewHolder.companyName.setText(tickets.get(position).getLeavingTime());
viewHolder.cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// here passing data to BusInformationCard
Intent ticketInfo = new Intent(mContext, BusInformationsCard.class);
ticketInfo.putExtra("busLine", tickets.get(position).getBusLine());
ticketInfo.putExtra("companyName", tickets.get(position).getCompany());
ticketInfo.putExtra("driverName", tickets.get(position).getName());
ticketInfo.putExtra("driverPhone", tickets.get(position).getDriverPhone());
ticketInfo.putExtra("seatNum", tickets.get(position).getSeatNum());
ticketInfo.putExtra("leavingTime", tickets.get(position).getLeavingTime());
ticketInfo.putExtra("latitude", tickets.get(position).getLatitude());
ticketInfo.putExtra("longitude", tickets.get(position).getLongitude());
mContext.startActivity(ticketInfo);
}
});
}
答案 0 :(得分:1)
您可以使用共享首选项在整个项目中使用数据。您只需要创建一个App Preference类,如下所示:-
public class AppPrefrences {
private static SharedPreferences mPrefs;
private static SharedPreferences.Editor mPrefsEditor;
public static boolean isUserLoggedOut(Context ctx) {
mPrefs = PreferenceManager.getDefaultSharedPreferences(ctx);
return mPrefs.getBoolean("id_logged_in", true);
}
public static void setUserLoggedOut(Context ctx, Boolean value) {
mPrefs = PreferenceManager.getDefaultSharedPreferences(ctx);
mPrefsEditor = mPrefs.edit();
mPrefsEditor.putBoolean("id_logged_in", value);
mPrefsEditor.commit();
}
public static String getUserName(Context ctx) {
mPrefs = PreferenceManager.getDefaultSharedPreferences(ctx);
return mPrefs.getString("userName", "");
}
public static void setUserName(Context ctx, String value) {
mPrefs = PreferenceManager.getDefaultSharedPreferences(ctx);
mPrefsEditor = mPrefs.edit();
mPrefsEditor.putString("userName", value);
mPrefsEditor.commit();
}
public static void clearAllPreferences(Context ctx) {
mPrefs = PreferenceManager.getDefaultSharedPreferences(ctx);
mPrefsEditor = mPrefs.edit();
mPrefsEditor.clear();
mPrefsEditor.commit();
}
}
,现在只需调用这些方法即可保存数据并获取已保存的数据。 创建自己的保存数据的方法并获取保存的数据
答案 1 :(得分:0)
您可以使用 Intent的getExtra方法
,将数据从一种活动转移到另一种这里是示例::
Example
String name;
name = getIntent().getStringExtra("driverName");
答案 2 :(得分:0)
如果您希望传递完整的 ticket
对象,您可以使用 Java 中的 Serializable 或 Parcelable 类。
这些类可帮助您将对象转换为可在活动之间传输的形式。
在 Serializable 的情况下你需要做的就是扩展你的票类
public class Ticket extends Serializable {}
如果是 Parcelable,您需要添加更多代码(如果是 Java)。
public class Ticket extends Parcelable {
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeString(busLine);
// Similarly for all the other parameters.
}
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
public Ticket createFromParcel(Parcel in) {
return new Ticket(in);
}
public Ticket[] newArray(int size) {
return new Ticket[size];
}
};
}
在这两种情况下,现在您可以像 intent.putExtra("ticket", ticket);
一样直接在意图中传递完整的票证对象,并且可以在其他活动中接收它,例如 Ticket ticket = getIntent().getSerializableExtra("ticket")
*/ getParcelable */
如果您有扩展 Parcelable。
Parcelable 和 Serializable 的主要区别在于速度的不同,Parcelable 比 Serializable 快。此外,parcelable 是可定制的,因此开发人员可以独立处理他们的数据。 Serializable 也使用了 Java Reflection API,因此在转换过程中最终会产生大量垃圾对象。