我尝试在排序名称后刷新listview,其中数据排序实际上有效,但列表无法刷新。在这里,如果我触摸listview然后显示排序数据,但是当我点击排序按钮时,它不起作用只显示空白数据。
我已经完成了程序,就像这样
String[] names = new String[] { "Honeycomb", "Donut", "Eclair", "Cupcake", "IceCream Sandwich", "Froyo", "Gingerbread" };
listView = (ListView) findViewById(R.id.listView1);
nameAdapter= new MyBaseAdapter(getApplicationContext(), Arrays.asList(names));
System.out.println(" no sort="+Arrays.asList(names));
bsort.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Collections.sort(Arrays.asList(names));
System.out.println("sort "+Arrays.asList(names));
//nameAdapter= new MyBaseAdapter(getApplicationContext(), Arrays.asList(names));
//listView.setAdapter(nameAdapter);
nameAdapter.notifyDataSetChanged();
}
});
logcat的
01-19 15:40:08.971: I/System.out(22343): no sort=[Honeycomb, Donut, Eclair, Cupcake, IceCream Sandwich, Froyo, Gingerbread]
01-19 15:40:09.158: E/Surface(22343): getSlotFromBufferLocked: unknown buffer: 0xb884c720
01-19 15:40:09.159: D/OpenGLRenderer(22343): endAllActiveAnimators on 0xb886bd70 (ListView) with handle 0xb8933368
01-19 15:40:15.002: I/System.out(22343): sort [Cupcake, Donut, Eclair, Froyo, Gingerbread, Honeycomb, IceCream Sandwich]
唯一的问题是,当按钮bsort点击时,我无法刷新或更新列表视图。当我第一次点击bsort,排序数据但无法列表视图刷新时,数据显示未排序,但当我点击listview时,排序数据显示在listview中。
使用此代码是否有问题。
答案 0 :(得分:0)
您在代码中的2个位置创建了列表:
nameAdapter= new MyBaseAdapter(getApplicationContext(), Arrays.asList(names));
Collections.sort(Arrays.asList(names));
因此,每次单击时创建另一个List,然后对其进行排序,但它对传递给构造函数的第一个列表没有影响。只创建一个列表,并在两个地方使用它:
List list = Arrays.asList(names);
nameAdapter= new MyBaseAdapter(getApplicationContext(), list);
Collections.sort(list);