android 2.3의 ListView에 이상한 문제가 있습니다. 응용 프로그램은 EditText 및 ListView가있는 간단한 수행 목록입니다. 텍스트를 쓰고 Enter 키를 누를 때마다 ListView에 텍스트가 추가됩니다. 문제는 3 번째 요소를 추가 할 때 발생합니다. ListView에서 순서가 엉망입니다 (3 번째 요소는 1 등). 나는이 문제를 해결하여 매번 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