It will help you
``
private class EfficientAdapter extends BaseAdapter { private LayoutInflater mInflater; private String[] attitude_names; public String[] attitude_values; private String name; public static HashMap<Integer,String> myList=new HashMap<Integer,String>(); public EfficientAdapter(Context context) { mInflater = LayoutInflater.from(context); attitude_names = context.getResources().getStringArray(R.array.COMP_ATTITUDE_NAME); attitude_values = new String[attitude_names.length]; } // initialize myList for(int i=0;i<attitude_names.length;i++) { myList.put(i,""); } public Object getItem(int position) { return position; } public long getItemId(int position) { return position; } public View getView(int position, View convertView, ViewGroup parent) { final ViewHolder holder; if (convertView == null) { convertView = mInflater.inflate(R.layout.addcomp_attitude_row, null); holder = new ViewHolder(); holder.Attitude_Name = (TextView) convertView.findViewById(R.id.addcomp_att_name); holder.Attitude_Value = (EditText) convertView.findViewById(R.id.addcomp_att_value); holder.Attitude_Value.addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable edt) { myList.put(pos,s.toString.trim()); attitude_values[holder.ref] = edt.toString(); } public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {} public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { //attitude_values[ref] = Attitude_Value.getText().toString(); } }); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.ref=position; holder.Attitude_Name.setText(attitude_names[position]); holder.Attitude_Value.setHint(attitude_names[position]); holder.Attitude_Value.setText(myList.get(position)); return convertView; } class ViewHolder { TextView Attitude_Name; EditText Attitude_Value; int ref; } @Override public int getCount() { return attitude_names.length; } }
Here I included a HashMap object that will make sure that the EditText contains the value. And when you scroll through the list, it will be displayed again by calling its getView method.
In this code, when you first load the listview, all your edittexts will be without text.once, you enter some text, this will be noted in myList.So, when you render the list again, your text will be prevented.
source share