会议室:使用ID检索用户信息

时间:2018-06-21 09:41:50

标签: android

我想将成员信息传递给第二个活动。

这是第一个活动中的代码。

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获取这些信息?

4 个答案:

答案 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);