Я использую следующий код, чтобы показать окно редактирования в спискеРедактирование текста странное поведение в ListView
Моего каждый элемент ListView содержит следующий шаблон
[EditText 1] [EditText 2] [EditText 3 ][EditText 4][EditText 5]
class CustomArrayAdapterForScore extends ArrayAdapter<ScoreModel>
{
public CustomArrayAdapterForScore()
{
super(MeetScore.this, R.layout.score_event_layout, myScoreArray);
}
@Override
public View getView(final int position, View convertView, ViewGroup parent)
{
View view = null;
LayoutInflater inflator = MeetScore.this.getLayoutInflater();
view = inflator.inflate(R.layout.score_event_layout, parent, false);
final ViewHolder viewHolder = new ViewHolder();
viewHolder.title = (TextView) view.findViewById(R.id.title);
viewHolder.box1 = (EditText) view.findViewById(R.id.box1);
viewHolder.box2 = (EditText) view.findViewById(R.id.box2);
viewHolder.box3 = (EditText) view.findViewById(R.id.box3);
viewHolder.box4 = (EditText) view.findViewById(R.id.box4);
viewHolder.box5 = (EditText) view.findViewById(R.id.box5);
viewHolder.box6 = (EditText) view.findViewById(R.id.box6);
viewHolder.box1.addTextChangedListener(new TextWatcher()
{
public void onTextChanged(CharSequence c, int arg1, int arg2, int arg3)
{
ScoreModel score = myScoreArray.get(position);
score.box1 = Integer.valueOf(viewHolder.box1.getText().toString());
myScoreArray.set(position, score);
listView.invalidateViews();
}
public void beforeTextChanged(CharSequence c, int arg1, int arg2, int arg3){}
public void afterTextChanged(Editable arg0){}
});
view.tag(viewHolder);
return view;
Whenver изменить текст EditBox, нажмите на него и писать с помощью клавиатуры, e, g, если я пишу 9, он показывает 9, но как только клавиатура исчезнет, текст почти исчез. Текст редактирования показывает пустое пространство.
Что не так?
Я не уверен, почему это происходит, если это не связано с тем, что вы вызываете 'invalidateViews()' в свой 'ListView', не сохраняя то, что находится в' EditText'. Но из того, что я вижу, вы не используете свой «ViewHolder» правильно. Вы каждый раз воссоздаете 'Просмотры', но' ViewHolder' так вам не нужно каждый раз воссоздавать их из ваших 'ресурсов'. Вы должны сохранить каждый «Просмотр» в своем классе «ViewHolder», а затем использовать его, чтобы получить ссылку на ваши «Просмотры» в других случаях – codeMagic
вы можете объяснить с помощью кода? –
недействительные представления были добавлены для тестирования, я удалил его, и он показывает то же самое. проверьте отредактированный код –