我有Android 2.3上的ListView奇怪的问题。应用程序是使用EditText和ListView的简单待办事项列表。每次你写文本,然后按ENTER键文本被添加到ListView。当我添加第三个元素时,发生问题,在ListView乱序排列(第三个元素成为第一个)。我解决了这个问题,所以我每次都在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