java - 如何为 ListView 中的项目设置 onClickListener(listview 的项目是通过从 firebase 检索数据动态生成的)

标签 java android listview onclicklistener

您好,我正在尝试创建一个聊天应用程序。我成功完成了用户身份验证、注册等初始步骤。成功登录后,用户会看到如下图所示的屏幕:

User Interface for a user 现在这里的用户列表由以下代码生成:

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

现在,每当用户点击特定名称时,我都必须将他带到一个消息 Activity (更准确地说是另一个 Activity )。请告诉我如何添加 onClickListeners 或任何其他可能的方法来执行此操作?

最佳答案

试试这个

在您的 fragment 或 Activity 中声明此内容

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

关于java - 如何为 ListView 中的项目设置 onClickListener(listview 的项目是通过从 firebase 检索数据动态生成的),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56337451/

相关文章:

java - IntelliJ IDEA - GUI Designer - 无法预览表单

android - 当进程被终止时,AlarmManager 中的警报被删除

android - 在 Jelly Bean 设备上读取 ActivityManager 日志?

java - 将图像从网站加载到 Android 应用程序

Android 使用 BaseAdapter 将 JsonArray 转换为 ListView 中的数组

java - 我可以创建一个同时在右侧和左侧都有值的 ListView 吗?

Java 应用程序架构指南

Java 8 流到文件

java - Retrofit+OkHttp 在发送 GET 请求时可以,但在发送 POST 时给出 SocketTimetout

java - 如何以 2019 年 2 月 24 日的格式在 Java 中查找 future 日期(比如从今天起两个月)