您的位置:首页 > 其它

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

2015-10-10 11:47 183 查看
在编写一个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));
// 设置空间集到arg1
arg1.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(){

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
reasonLayout.setVisibility(View.VISIBLE);
addreasonbtn.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Thread thread = new Thread(){
@Override
public void run() {
// TODO Auto-generated method stub
try {
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 block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
Message msg2 = handler.obtainMessage();
msg2.what = INSERT_FAIL;
handler.sendMessage(msg2);
e.printStackTrace();
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.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 block
e.printStackTrace();
System.out.println(e + "!!!warn activyty 313");
}
return arg1;

}
后来加上else问题解决了, 代码中红色标注部分
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: