Mam listview w mojej aplikacji, która jest w zasadzie poszukiwaniem, więc istnieje kilka EditTexts, które użytkownik musi wypełnić. Napotkałem następujące zagadnienia:Android: EditText w ListView wydanie
Niektóre EditText wymagają wprowadzenia numerycznej, więc ustawić InputType w analogicznym typu XML jako numeryczny, jednak, jak po kliknięciu na EditText klawiatury numerycznej jest pokazany ale prawie natychmiast znika i pojawia się zwykła klawiatura.
Jak można sobie wyobrazić, muszę przechowywać wartości, które użytkownik wprowadza w tych EditTexts. Mam problem z tym, że po wprowadzeniu tekstu w NIEKTÓRYCH EditTexts i przewijaniu w dół, tekst zniknie, gdy wrócę. W moim kodzie widzę, że podjąłem próbę zapobieżenia temu i powinienem wspomnieć, że działa idealnie dobrze z polami wyboru.
Na początku miałem problemy z utratą ostrości, ale rozwiązałem je patrząc na inne pytania (dodano potomkaFocusablity = "beforeDescendants" do ListView i windowSoftInputMode = "adjustPan"). Działa dobrze, z wyjątkiem tego, że gdy EditText jest poniżej połowy ekranu, traci skupienie, gdy tylko zacznę pisać. metoda getView na liście adaptera:
public View getView(final int position,View result,ViewGroup parent) { final ViewHolder vh; final Question question = values.get(position); if(holders[position]==null) vh = new ViewHolder(); else vh = holders[position]; LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); if(question.getQuestionType().equals(Question.TYPE_CLOSED)) { result = inflater.inflate(R.layout.closed_question_list_item, null); vh.cb = (CheckBox)result.findViewById(R.id.checkbox); vh.cb.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { vh.isChecked = isChecked; holders[position] = vh; } }); vh.cb.setChecked(vh.isChecked); } else { result = inflater.inflate(R.layout.numeric_question_list_item, null); vh.et = (EditText)result.findViewById(R.id.question_et); vh.et.addTextChangedListener(new TextWatcher() { @Override public void afterTextChanged(Editable s) { vh.tvValue = s.toString(); holders[position] = vh; Log.i(TAG,"Entered afterTextChanged for "+ question.getText()); } @Override public void beforeTextChanged(CharSequence s, int start,int count, int after) { } @Override public void onTextChanged(CharSequence s, int start,int before, int count) { } }); vh.et.setText(vh.tvValue); } vh.tv = (TextView)result.findViewById(R.id.question_text); vh.tv.setText(question.getText()); holders[position] = vh; result.setTag(vh); return result; }
być może to pomóc http://stackoverflow.com/questions/8772714/edittext-loses-content-on-scroll-in-listview?rq=1 – JahShaka
jaki sposób można rozwiązać problem # 3? Jeśli zostanie rozwiązany, proszę napisać odpowiedź: – desidigitalnomad