我有一个列表视图,我想在第一个位置禁用editText
。这就是我所做的:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final PatientView patientView;
if(convertView==null){
LayoutInflater inflater=LayoutInflater.from(context);
convertView=inflater.inflate(R.layout.lay_add_session_view,null);
patientView=new PatientView();
patientView.edtSessionDescription= (EditText) convertView.findViewById(R.id.edtSessionDescription);
patientView.edtSessionNumber= (EditText) convertView.findViewById(R.id.edtSessionNumber);
patientView.txtSessionTime= (TextView) convertView.findViewById(R.id.txtSessionTime);
patientView.btnAdd= (Button) convertView.findViewById(R.id.btnAdd);
patientView.btnDelete= (Button) convertView.findViewById(R.id.btnDelete);
convertView.setTag(patientView);
} else {
patientView= (PatientView) convertView.getTag();
}
patientView.edtSessionNumber.setText(modelPatientArrayList.get(position).getSessionNumber());
patientView.edtSessionNumber.setTag(position);
patientView.edtSessionDescription.setText(modelPatientArrayList.get(position).getSessionDescription());
patientView.txtSessionTime.setText(modelPatientArrayList.get(position).getTime());
if(0==(Integer)patientView.edtSessionNumber.getTag()){
patientView.edtSessionNumber.setEnabled(false);
}
patientView.btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.e("tag position",(Integer) patientView.edtSessionNumber.getTag()+"");
updateFirstSession(modelPatientArrayList.get(position), patientView.edtSessionDescription.getText().toString());
modelPatientArrayList.clear();
modelPatientArrayList.addAll(dbUtil.getPatientSession());
patientView.btnAdd.setText("edit");
patientView.btnAdd.setTag(position);
notifyDataSetChanged();
}
});
patientView.btnDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
deleteFromDataBase(modelPatientArrayList.get(position));
modelPatientArrayList.clear();
modelPatientArrayList.addAll(dbUtil.getPatientSession());
notifyDataSetInvalidated();
}
});
return convertView;
}
但问题是它在滚动后也禁用了其他视图的edittext。任何人都可以告诉我我做错了什么。
答案 0 :(得分:0)
把这段代码,应该解决你的问题。 if(position == 0) patientView.edtSessionNumber.setEnabled(假);
答案 1 :(得分:0)
由于ListView重新使用视图,因此您需要为两种情况编写代码
patientView.edtSessionNumber.setEnabled( (position == 0) ? false : true);