У меня есть странная проблема с ListView на Android 2.3. Приложение представляет собой простой список задач с помощью EditText и ListView. Каждый раз, когда вы пишете текст и нажимаете ENTER, текст добавляется в ListView. Проблема возникает, когда я добавляю третий элемент, заказываю в ListView mess (третий элемент становится первым). Я решаю эту проблему, поэтому каждый раз перехватываю данные в getView, но тем самым теряю оптимизацию шаблона ViewHolder. В 4.0 у меня нет проблем с тем же кодом :). Кто-нибудь знает, в чем причина такого поведения?Странное поведение ListView
Это мой метод getView.
public View getView(int position, View convertView, ViewGroup parent) {
final ViewHolder view;
if(convertView == null) {
convertView = ((LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.todo_single_row, parent, false);
view = new ViewHolder();
view.text = (TextView)convertView.findViewById(R.id.tvToDoText);
view.date = (TextView)convertView.findViewById(R.id.tvToDoDate);
convertView.setTag(view);
}
else
{
view = (ViewHolder)convertView.getTag();
}
view.text.setText(ToDoList.getInstance().getToDoList().get(position).getText());
view.date.setText(ToDoList.getInstance().getToDoList().get(position).getDate().toString());
return convertView;
}
Я стараюсь также сортировать мой адаптер, но не помогло :(.
Comparator<Item> comparator = new Comparator<Item>() {
public int compare(final Item item1, final Item item2) {
return item1.getText().compareToIgnoreCase(item2.getText());
};
};
public class Item {
private String text;
private Date date;
public Item(String text) {
this.text = text;
this.date = new Date(java.lang.System.currentTimeMillis());
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}
Если в заказе обработки строк нет гарантии, как сортировка может мне помочь? – Johnny
Сортировка в основном добавит верхний макет к операции рендеринга ваших строк. Он будет знать, что он должен отображать, но также рассчитывает на то, что вы определили метод '.sort()', и это сохранится, поэтому ваш 'ListView' будет отсортирован. – nKn
Я сортирую свою коллекцию, но имею ту же проблему. Теперь коллекция сортируется. Я проверяю, что из журналов, но порядок в ListView неверен. Я пропустил что-то, что я сортировал, прежде чем вызывать notifyDataSetChanged? – Johnny