2016-07-29 26 views
0

Ich habe eine listview mit zwei Zeilen von Elementen: Benutzer-ID und Benutzername. Wie wird nur die Benutzer-ID aus listview abgerufen, wenn auf eine der Zeilen geklickt wird?Android - ListView Layout zwei Zeilen Listenelement

public class MainActivity extends AppCompatActivity { 

private DatabaseReference mUsers; 
String getValue = null; 
ListView lvUsers = (ListView) findViewById(R.id.lvUsers); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    mUsers = FirebaseDatabase.getInstance.getReference().child(Constants.FIREBASE_USERS); 

    FirebaseListAdapter<Users> adapter = new FirebaseListAdapter<Users>(
      this, Users.class, android.R.layout.two_line_list_item, mUsers 
    ) { 
      @Override 
      protected void populateView(View v, Users user, int pos) { 
      ((TextView)v.findViewById(android.R.id.text1)).setText(user.getUserID()); 
      ((TextView)v.findViewById(android.R.id.text2)).setText(user.getUsername()); 
      } 
    }; 

    lvUsers.setAdapter(adapter); 
    setupListViewMenu(); 
} 

private void setupListViewMenu() { 
    lvUsers.setOnItemLongClickListener(
      new AdapterView.OnItemLongClickListener() { 
     @Override 
     public boolean onItemLongClick(AdapterView<?> adapter, 
             View item, int pos, long id) { 

      // How to retrieve only User ID from here? 
      getValue = ((TextView)view).getText().toString(); 

      return true; 
     } 

    }); 
} 
} 

Die listview Daten von Firebase-Datenbank. Ist das Abrufen mit for loop der einzige Weg? Ich muss eine zweidimensionale Matrix durchlaufen? Danke

Antwort

1

Könnten Sie bitte den folgenden Code versuchen?

getValue = ((TextView)item.findViewById(android.R.id.text2)).getText().toString(); 

Ich glaube, dass android.R.id.text2 eine der Childs von item (View im clicklistener erhalten) ist

Aber testen müssen ... Hoffe, es funktioniert