ListView点击Item其他Item响应的错误笔记

来源:互联网 发布:python json数据处理 编辑:程序博客网 时间:2024/05/02 07:33

在编写一个ListView的时候里面有一个按钮.在Adapter里设置了点击事件.


但是在点击一个Item的时候发现响应的是另一个Item, position检查之后也没有出错,困扰了很久, 以下是getView源代码

public View getView(int arg0, View arg1, ViewGroup arg2) {// TODO Auto-generated method stub// 自定义视图 ListItemView listItemView = null;if (arg1 == null) {listItemView = new ListItemView();// 获取listitem布局文件arg1 = listContainer.inflate(R.layout.list_item_warn, null);// 获取控件对象listItemView.tv1 = (TextView) (arg1.findViewById(R.id.tv11));listItemView.tv2 = (TextView) (arg1.findViewById(R.id.tv22));listItemView.tv3 = (TextView) (arg1.findViewById(R.id.tv33));listItemView.tv4 = (TextView) (arg1.findViewById(R.id.tv44));listItemView.tv5 = (TextView) (arg1.findViewById(R.id.tv55));listItemView.tv6 = (TextView) (arg1.findViewById(R.id.tv66));// 设置空间集到arg1arg1.setTag(listItemView);} else {listItemView = (ListItemView) arg1.getTag();}// 设置空间内容listItemView.tv1.setText((String) listItems.get(arg0).get("title"));listItemView.tv2.setText((String) listItems.get(arg0).get("text"));listItemView.tv3.setText((String) listItems.get(arg0).get("date"));listItemView.tv5.setText((String) listItems.get(arg0).get("reason"));listItemView.tv6.setText((String) listItems.get(arg0).get("id"));try {Date date = new SimpleDateFormat("yyyy-MM-dd").parse((String) listItems.get(arg0).get("date"));Calendar calendar = Calendar.getInstance();calendar.setTime(date);calendar.set(Calendar.DAY_OF_MONTH,calendar.get(Calendar.DAY_OF_MONTH));date = calendar.getTime();Date current = new Date();final int position = arg0;if (date.before(current)) {listItemView.tv4.setVisibility(0);listItemView.tv5.setVisibility(0);if(listItemView.tv5.getText().toString().equals("回访未完成原因:(点击此行添加)")){listItemView.tv5.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubreasonLayout.setVisibility(View.VISIBLE);addreasonbtn.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubThread thread = new Thread(){@Overridepublic void run() {// TODO Auto-generated method stubtry {if (new VisitUtils().insertReason(reasonEditText.getText().toString(),listItems.get(position).get("id").toString(), WarnActivity.this)) {Message msg = handler.obtainMessage();msg.what = INSERT_REASON_SUCCESS;handler.sendMessage(msg);} else {System.out.println("插入失败");}} catch (HttpResponseException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blockMessage msg2 = handler.obtainMessage();msg2.what = INSERT_FAIL;handler.sendMessage(msg2);e.printStackTrace();} catch (XmlPullParserException e) {// TODO Auto-generated catch blocke.printStackTrace();}}};thread.start();}});}});}else{listItemView.tv5.setClickable(false);}} <span style="color:#ff0000;">else {listItemView.tv4.setVisibility(8);listItemView.tv5.setVisibility(View.GONE);}</span>} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();System.out.println(e + "!!!warn activyty 313");}return arg1;}
后来加上else问题解决了, 代码中红色标注部分

0 0