【问题标题】:No message displayed when listView is clicked单击 listView 时不显示任何消息
【发布时间】: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

标签: android mysql android-intent arraylist android-listview


【解决方案1】:

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

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

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

希望这会有所帮助:)

【讨论】:

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

请尝试如下

istViewEdit.setOnItemClickListener(new OnItemClickListener() {

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-05
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-13
    • 1970-01-01
    相关资源
    最近更新 更多