单击 listView 时不显示任何消息

Posted

技术标签:

【中文标题】单击 listView 时不显示任何消息【英文标题】:No message displayed when listView is clicked 【发布时间】:2016-04-07 02:28:58 【问题描述】:

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

            

现在我将onItemClickListener 实现为listView

     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$1.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) 

【问题讨论】:

使用staffs 代替StaffDetails 【参考方案1】:

您不需要使用 HashMap。我认为这就是在搞砸你。而是使用

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

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

希望这会有所帮助:)

【讨论】:

如何访问它的 id ? StaffDetails.get(postion).getID()【参考方案2】:

请尝试如下

istViewEdit.setOnItemClickListener(new OnItemClickListener() 

【讨论】:

以上是关于单击 listView 时不显示任何消息的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5,单击表单提交按钮时不显示任何内容

WPF ListView在运行时不更新

为啥 PyCharm 中的 python 控制台在使用 pyqt 时不显示任何错误消息? [复制]

c#listview添加控件时不显示滚动条

Listview 项目在单击时突出显示(不需要)

添加时不显示 ListView 项目