[英]How to set onClickListener for items in a ListView (items of listview are generated dynamically by retreiving data from firebase)
您好Iam嘗試制作一個chatApp。Iam通過諸如用戶身份驗證,注冊之類的初始步驟成功完成。成功登錄后,用戶將獲得如下圖所示的屏幕:
ListView listView;
View view;
ArrayList<String> usernames = new ArrayList<>();
String name;
FirebaseDatabase db = FirebaseDatabase.getInstance();
DatabaseReference root = db.getReference();
DatabaseReference userRef = root.child("users");
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_users,container,false);
listView =(ListView) view.findViewById(R.id.listView);
final ArrayAdapter <String> arrayAdapter = new ArrayAdapter<String>
(getContext(),android.R.layout.simple_list_item_1,usernames);
listView.setAdapter(arrayAdapter);
userRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
String value = dataSnapshot.getValue().toString();
try
{
JSONObject object = new JSONObject(value);
name = object.getString("username");
}
catch(JSONException e)
{
e.printStackTrace();
}
usernames.add(name);
arrayAdapter.notifyDataSetChanged();
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {}
@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {}
});
return view;
}
現在,每當用戶單擊特定名稱時,我都必須將其帶到messageActivity(更確切地說是另一項活動)。 請告訴我如何添加onClickListeners或任何其他可能的方法來做到這一點?
嘗試這個
在您的片段或活動中聲明此內容
private OnItemClickListener listPairedClickItem = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView < ? > arg0, View arg1, int arg2, long arg3) {
String personName = usernames.get(position);
Toast.makeText( context, "listview clicked ", Toast.LENGTH_LONG ).show();
Intent intent = new Intent(currenactivityname.this, activitytolaunchname.class);
intent.putExtra("username",personName ); //get this name in next activity and show in title bar
startActivity(intent);
}
};
用法
listView.setOnItemClickListener( listPairedClickItem );
后
listView.setAdapter(arrayAdapter);
像這樣創建您的監聽器:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
// Do what you want here
}
});
使用onItemClickListener:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
String selectedName = usernames.get(position);
// Do what you want with username here
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.