Android: OnItemClickListener返回最后一项的值



下面的代码对我来说工作得很好,但现在我不知道它出了什么问题!每当我点击一个道具时,它都会将最后一个道具的值放到intent中!任何想法?

 protected void onPostExecute(List<HashMap<String, String>> result) {
        customList=new ArrayList<>();
        for (int i = 0; i < result.size(); i++) {
            HashMap<String, String> appointement = result.get(i);
            String fromT = appointement.get("fromT");
            String toT = appointement.get("toT");
            String date = appointement.get("date");
            //int doctorid=Integer.parseInt(id.replaceAll("[\D]",""));
            addAvailableAppoint(fromT, toT, date);
        }
        updateListView();
    }
}
private void addAvailableAppoint(final String fromT, final String toT, final String date) {
    customList.add(new AvailabilityList(fromT));
    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Log.i("items", "fromt " + fromT + "tot: " + toT);
            Intent intent = new Intent(MakeAppointementActivity.this, AppointementActivity.class);
            intent.putExtra("Doctor's name", DoctorName);
            intent.putExtra("Doctor's infos", DoctorInfos);
            intent.putExtra("fromT", fromT);
            intent.putExtra("toT", toT);
            intent.putExtra("date", date);
            startActivity(intent);
        }
    });
}
// split new function for update listview
private void updateListView(){
    ArrayAdapter adapter=new DoctorAvailabilityAdapter(MakeAppointementActivity.this,R.layout.list_items,customList);
    adapter.notifyDataSetChanged();
    lv.setAdapter(adapter);

1)您不需要为列表中的每个新项目设置单击侦听器。只需在for循环外设置一次即可。

2)尝试为包含所有数据的适配器使用Model类:fromT, toTdate。因为我看到,你的AvailabilityList只包含fromT

3)正如在@CommonsWare回答中提到的,在onItemClick中尝试使用positionid在参数中找到合适的对象。

,

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
       AvailabilityList item = (AvailabilityList)parent.getItem(position);
       //Then from your item you can get the data: fromT , toT and date
    }

每当我点击一个项目,它把最后一个项目的值到意图!

您忽略了onItemClick()的所有参数。如果您希望数据变化,则需要通过positionid在集合中找到适当的数据。

相关内容

  • 没有找到相关文章

最新更新