我想将成员信息传递给第二个活动。
这是第一个活动中的代码。
public void onMemberClick(int position) {
Member member = mMember.get(position);
Intent intent = new Intent(getApplicationContext(),MemberInfo.class);
intent.putExtra("MemberID", member.getId());
MemberInfo.open(this, member.getId());
这是第二个活动中的代码。
public static void open(Activity activity, long memberid) {
Intent intent = new Intent(activity, MemberInfo.class);
intent.putExtra("MemberID", memberid);
activity.startActivity(intent);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_memberinfo);
Intent intent = getIntent();
if (intent != null && intent.hasExtra("MemberID")) {
long memberid = intent.getLongExtra("MemberID", -1);
// TODO: get customer details based on customer id
TextView firstname = findViewById(R.id.layout_memberfirstname);
TextView surname = findViewById(R.id.layout_membersurname);
TextView balance = findViewById(R.id.layout_memberbalance);
}
else {
Toast.makeText(
getApplicationContext(),
R.string.empty_not_saved,
Toast.LENGTH_LONG).show();
}
因此在第一个活动中,我得到了一个成员列表。我单击一个成员,并希望通过open方法传递该成员的ID。该ID应该传递给第二个活动。
成员具有名字,姓氏和余额。我想让那些详细信息显示在Textviews中。如何使用该成员的ID获取这些信息?
答案 0 :(得分:1)
查询以获取会员列表
@Query("SELECT firstname, surname FROM Member WHERE user IN (:users)")
public List<Member> Memberlist(List<String> members);
答案 1 :(得分:0)
像下面这样查询房间db中的dao接口。
@Query("SELECT * FROM TableName WHERE id=:id")
User getUserData(long id);
创建应用级别的活动。
public class AppActivity extends Application {
static AppDatabase db;
@Override
public void onCreate() {
super.onCreate();
db = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "database-name").build();
}
public static AppDatabase getDatabase() {
return db;
}
}
此活动在应用程序标签中定义为android清单文件。
android:name=".db.AppActivity" // this line add into application tag.
之后定义数据库版本和其他内容。
@Database(entities = {MyTable.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {
public abstract MyTableDao getTableDao();
}
第二次活动之后,获取会员ID,然后执行以下查询。
Member member=AppActivity.getDatabase().getTableDao().getData(memberId);
确保表中的数据和成员ID不为空。
要显示所有详细信息而不获取数据后,将所有数据传递给intent并使用intent获取数据。
答案 2 :(得分:0)
尝试一下。
Java:
@Query("select * from user where id= :id")
User getUserById(Long id);
科特琳:
@Query("select * from user where id= :id")
fun getUserById(id: Long) : User
希望这会有所帮助
答案 3 :(得分:0)
我必须在我的DAO中创建一个新方法。该查询成功了:SELECT * FROM member_table WHERE MemberID =:id
然后,此查询应返回您尝试获取的类的对象,在我的情况下: 成员getInfo(long id);