如何使用android

时间:2016-01-19 21:16:55

标签: android listview baseadapter

我尝试在排序名称后刷新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中。

使用此代码是否有问题。

1 个答案:

答案 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);