java - (onItemClick) 显示 ListView 中的 Json 数据 - Android

标签 java android

我已经完成解析 json 并将其获取到 ListView ,但是我遇到了问题当单击 listview 中的项目时仅显示最后解析的 Json 数据时,我确切地希望单击该项目时按位置显示正确的数据:

for (int i = 0; i < jsonArray.length(); i++) {
                            JSONObject c = jsonArray.getJSONObject(i);
                            final String fname = c.getString("fname");
                            final String lname = c.getString("lname");
                            String username = c.getString("username");
                            //String user_id = c.getString("user_id");
                            //String gender = c.getString("gender");

                            HashMap<String, String> contact = new HashMap<>();

                            contact.put("fname", fname);
                            contact.put("lname", lname);
                            contact.put("username", username);

                            users.add(contact);

                            ListAdapter adapter = new SimpleAdapter(FindPeopleActivity.this, users,
                                    R.layout.list_item, new String[]{"fname", "lname", "username"},
                                    new int[]{R.id.fname, R.id.lname, R.id.username});
                            lv.setAdapter(adapter);

                            lv.setOnItemClickListener(new AdapterView.OnItemClickListener(){
                                @Override
                                public void onItemClick(AdapterView<?> parent , View view , int position , long id){
                                    Intent i = new Intent(FindPeopleActivity.this,UserProfileActivity.class);
                                    Toast.makeText(getApplicationContext(),fname,Toast.LENGTH_SHORT).show();
                                }
                            });
                        }

最佳答案

在for循环之后设置setOnItemClickListener。

   lv.setOnItemClickListener(new AdapterView.OnItemClickListener(){

        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {


              //i = row/item clicked in listview

             //Get the variable from the array you passed to the adapter
             newItem.variable1 = jsonArrayData[i].variable1;
             newItem.variable2 = jsonArrayData[i].variable2;

            //Pass the selected json info...
             yourMethod(newItem);




            Toast.makeText(getApplicationContext(),fname,Toast.LENGTH_SHORT)
            .show();

        }
    });

在您的 toast 中放入一些测试值,例如 i 来查看正在传递的值。

关于java - (onItemClick) 显示 ListView 中的 Json 数据 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46269870/

相关文章:

java - 如何使用thymeleaf在页面源代码中打印mensagens?

android - 如何在每次改造 API 调用时自动显示进度条?

java - 尝试使用 ProGuard 混淆导出 apk 时出现 "Out Of Memory"

android - WebView:如何找到当前页面的基本 URL?

Android 自定义 SeekBar - 进度不跟随拇指

java - 当应用程序部署为 JAR 时,为什么 ".."(两个句点)无法向上一级目录工作?

java - 如何从 AsyncTask 扩展为通用基类?

java - 如何在 Spring Boot 中的组件中 Autowiring 存储库接口(interface)

java - 如何填充<表单 :select> with List<String>?

android - 调用从 Android/Java 返回值的 Unity C# 方法