单击 listView 时不显示任何消息

No message displayed when listView is clicked

Staff_Benefit中,有一个listView,其中的数据和图像是从MySQL中检索的。单击列表时,它应该显示 iD

   List<Staff> staffs = new ArrayList();
   ListView listViewEdit;
   ArrayList<HashMap<String, Object>> StaffDetails;


      listViewEdit = (ListView)edit_details. findViewById(R.id.listViewEditStaff);
      StaffDetails = new ArrayList<HashMap<String, Object>>(); // error


         protected void showList(){  // retrieved value from MySQL
                try {
                    JSONObject jsonObj = new JSONObject(myJSON);
                    details= jsonObj.getJSONArray(Config.TAG_RESULTS);

                    for(int i=0;i<details.length();i++){
                        JSONObject c = details.getJSONObject(i);
                        String type = c.getString(Config.TAG_TYPE);
                        String description = c.getString(Config.TAG_DESCRIPTION);
                        String amount=c.getString(Config.TAG_AMOUNT);
                        String image=c.getString(Config.TAG_IMAGE);
                        int ID=c.getInt(Config.TAG_ID);
                       Staff staff= new Staff(ID,type,description,amount,image) ;
                        staffs.add(staff);
                    }

                   CVAdapter adapter = new CVAdapter(getActivity(),staffs);
                    listViewEdit.setAdapter(adapter); // retrieved data get displayed.

                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }

现在我实施 onItemClickListenerlistView

     listViewEdit.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> listView, View view,
                                        int position, long id) {
                    mClickedPosition=position; // update
                    HashMap<String,Object> clickedItem = StaffDetails.get(position);
                    iD=clickedItem.get(Config.TAG_ID);
                    Toast.makeText(getActivity(),iD+"",Toast.LENGTH_LONG).show();
                   // Log.e("A", "A");
                }
            });

应用程序未崩溃,但堆栈跟踪中显示了某些内容

01-03 16:54:35.627  12678-12678/com.example.project.myapplication W/System.err﹕ java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
01-03 16:54:35.627  12678-12678/com.example.project.myapplication W/System.err﹕ at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
01-03 16:54:35.627  12678-12678/com.example.project.myapplication W/System.err﹕ at java.util.ArrayList.get(ArrayList.java:308)
01-03 16:54:35.627  12678-12678/com.example.project.myapplication W/System.err﹕ at com.example.project.myapplication.GUI.Edit_Staff_Benefit_ListView.onItemClick(Edit_Staff_Benefit_ListView.java:105)
01-03 16:54:35.627  12678-12678/com.example.project.myapplication W/System.err﹕ at android.widget.AdapterView.performItemClick(AdapterView.java:308) 

你不需要使用HashMap。我认为这就是让你感到困惑的原因。而是使用

 ArrayList<Staff> StaffDetails = new ArrayList<>();

并且在侦听器中使用 staffs 而不是 StaffDetails StaffDetails 中没有数据。 :3

希望这对您有所帮助:)

请尝试如下

istViewEdit.setOnItemClickListener(new OnItemClickListener() {