我有一個listview由TextView,EditText和Checkbox組成。我想讓edittext的狀態保持不變,當我在edittext中更改文本 ,然後向上或向下滾動列表視圖時,添加/寫入到edittext中的文本不應該更改,並且必須保留因爲它是如何使EditText值在可滾動列表視圖中持久
我設法使複選框持久化,我不知道如何使edittext狀態持久。
請看看在getView()methos它下面貼 並請讓我知道如何解決這個問題
getView
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View view = null;
if (convertView == null) {
LayoutInflater layoutinflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
view = layoutinflater.inflate(R.layout.model, null);
final ViewHolder holder = new ViewHolder();
holder.tv = (TextView) view.findViewById(R.id.tv);
holder.cb = (CheckBox) view.findViewById(R.id.cb);
holder.et = (EditText) view.findViewById(R.id.et);
holder.cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
ItemDesign element = (ItemDesign) holder.cb.getTag();
element.setChecked(buttonView.isChecked());
}
});
view.setTag(holder);
holder.cb.setTag(designList.get(position));//checkbox
//edittext
ItemDesign element = (ItemDesign) holder.et.getTag();
if (element != null) {
element.setEtTxt(holder.et.getText().toString());
}
holder.et.setTag(designList.get(position));
holder.tv.setTag(designList.get(position));//textview
} else {
view = convertView;
((ViewHolder)view.getTag()).et.setTag(designList.get(position));//edittext
((ViewHolder)view.getTag()).tv.setTag(designList.get(position));//textview
((ViewHolder)view.getTag()).cb.setTag(designList.get(position));//checkbox
}
ViewHolder holder = (ViewHolder) view.getTag();
holder.tv.setText(designList.get(position).getTxt()); //textview
holder.cb.setChecked(designList.get(position).isChecked());//checkbox
//edittext
String etTxt = holder.et.getText().toString();
designList.get(position).setEtTxt(etTxt);
holder.et.setText(designList.get(position).getEtTxt());
return view;
}
private class ViewHolder {
TextView tv;
CheckBox cb;
EditText et;
}
您必須在designList數組中維護值。並在getView方法,你必須檢查和settext或setchecked ... –
@SamirMangroliya好的,在我的designList中有每個視圖「TextView,Checkbox,Edittext」的getter和setter,我在getView中使用這些getter和setter上面,我設法使複選框持久......但我的問題是,如何使Edittext值持久 – user2121