我正在使用Firebase开发聊天应用。
我的问题是我在Firebase数据库的列表视图中显示所有用户。我想点击列表中的任何用户,然后该用户的电子邮件应该以祝酒词显示。
在列表视图中,我在单独的文本视图中显示用户的姓名和电子邮件。那么如何在点击的项目上获取电子邮件textview的数据?
请帮助或建议替代解决方案。
这是我的代码:
users = (ListView) findViewById(R.id.userlist1);
users.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Intent intent = new Intent(UserList.this, OneChat.class);
String p = "p";
//Toast.makeText(getApplicationContext(), i+""+users.getItemAtPosition(i).toString(), Toast.LENGTH_LONG).show();
intent.putExtra(p,i);
startActivity(intent);
}});
List<user> allu = new ArrayList<>();
uad = new useradapter(this, R.layout.item_user, allu);
users.setAdapter(uad);
firebaseAuth0 = FirebaseAuth.getInstance();
FirebaseUser user0 = firebaseAuth0.getCurrentUser();
if (user0 != null) {
// User is signed in
attachDatabaseReadListener();
} else {
// User is signed out
detachDatabaseReadListener();
}
attachDatabaseReadListener();
}
private void attachDatabaseReadListener() {
if (mChildEventListener == null) {
mChildEventListener = new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
user userf = dataSnapshot.getValue(user.class);
uad.add(userf);
progressDialog.hide();
//mProgressBar.setVisibility(ProgressBar.INVISIBLE);
// tvw=(TextView) findViewById(R.id.textView3);
//tvw.setVisibility(View.GONE);
}
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
public void onCancelled(DatabaseError databaseError) {
}
};
udbr.addChildEventListener(mChildEventListener);
}}
private void detachDatabaseReadListener() {
if (mChildEventListener != null) {
udbr.removeEventListener(mChildEventListener);
mChildEventListener = null;
}
}
答案 0 :(得分:1)
我想你的allu列表包含所有用户..使这个列表成为一个全局变量,然后在你的onItemSelectListener中做这样的事情
users.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Toast.makeText(getApplicationContext(), allu.get(i).getEmail(), Toast.LENGTH_LONG).show();
Intent intent = new Intent(UserList.this, OneChat.class);
intent.putExtra("p",i);
startActivity(intent);
}});