如何从onClick事件的listview项中获取特定项?

时间:2016-12-15 12:13:27

标签: android listview firebase firebase-realtime-database

我正在使用Firebase开发聊天应用。

我的问题是我在Firebase数据库的列表视图中显示所有用户。我想点击列表中的任何用户,然后该用户的电子邮件应该以祝酒词显示。

在列表视图中,我在单独的文本视图中显示用户的姓名和电子邮件。那么如何在点击的项目上获取电子邮件textview的数据?

请帮助或建议替代解决方案。

enter image description here

这是我的代码:

    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;
    }
}

1 个答案:

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