我的Item中有一个button一个edittext,button做成了dialog的形式,现在edittext是隐藏的,当button选择第一个选项的时候edittext隐藏,当button选择2、3的时候显示,我写完不清楚哪里不对,求指正,部分代码如下。
// 检查结果按钮配适器
holder.bn2.setTag(contents.get(position));
((Button) convertView.findViewById(R.id.lr31))
.setOnClickListener(new View.OnClickListener() {
final ChoiceOnClickListener choiceListener = new ChoiceOnClickListener();
public void onClick(View v) {
new AlertDialog.Builder(
MissionTab2ActivityLuruResinfo.this)
.setTitle("检查结果")
.setSingleChoiceItems(R.array.shujuluru2,
0, choiceListener)
.setPositiveButton(
"确定",
new DialogInterface.OnClickListener() {
@Override
public void onClick(
DialogInterface dialog,
int which) {
int choiceWhich = choiceListener
.getWhich();
String bn2_string = getResources()
.getStringArray(
R.array.shujuluru2)[choiceWhich];
holder.bn2
.setText(bn2_string);
Map<String, String> map = contents
.get(position);
map.put("abc3", bn2_string);
contents.set(position, map);
serial_no = map
.get("serial_no");
MSAApplication app = MSAApplication
.getInstance();
TcheckresultdetailDAO jcjgDAO = new TcheckresultdetailDAO(
app);
jcjgDAO.open();
TcheckresultdetailPK pk = new TcheckresultdetailPK();
pk.setSerial_no(serial_no);
TcheckresultdetailPO jcjgPO = jcjgDAO
.getPO(pk);
if (bn2_string
.equalsIgnoreCase("符合")) {
jcjgPO.setCheck_result("FH");
}
if (bn2_string
.equalsIgnoreCase("一般不符合")) {
jcjgPO.setCheck_result("YBBFH");
holder.lr41.setVisibility(View.VISIBLE);
}
if (bn2_string
.equalsIgnoreCase("重大不符合")) {
jcjgPO.setCheck_result("ZDBFH");
holder.lr41.setVisibility(View.VISIBLE);
}
jcjgDAO.addOrUpdate(jcjgPO);
System.out.println(jcjgPO
.getCheck_result());
jcjgDAO.close();
}
}).show();
}
}
------解决思路----------------------
我一般操作列表项控件隐藏显示时,都是在数据源中设置一个是否隐藏的字段,点确定更新Adapter的数据,然后notifyDataSetChanged。直接这么写的话可能会出现错乱的现象。
holder.title.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View title) {
if (data.get(position).get("expand").equals("0"))
data.get(position).put("expand", "1");
else
data.get(position).put("expand", "0");
adapter.notifyDataSetChanged();
}
});
holder.content.setVisibility((ta.get("expand").equals("1")) ? View.VISIBLE : View.GONE);
------解决思路----------------------
getview中就先判断button的内容,如果内容是YBBFH或YBBFH就显示,FH或为空就隐藏,这个是初始化显示,点击是事件显示。