单击 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
而不是StaffDetails
,StaffDetails
中没有数据。 :3
希望这会有所帮助:)
【讨论】:
如何访问它的 id ?StaffDetails.get(postion).getID()
【参考方案2】:
请尝试如下
istViewEdit.setOnItemClickListener(new OnItemClickListener()
【讨论】:
以上是关于单击 listView 时不显示任何消息的主要内容,如果未能解决你的问题,请参考以下文章