android - 按字母顺序(来自数据库)使用光标中的内容对 ListView 进行排序

标签 android sorting listview cursor

我在这里阅读了一些关于如何使用例如 collections.sort 或 sortOrder 按字母顺序排列 ListView 的主题,但我不能让它在我的情况下工作,因为我没有使用数组列表。

我的 ListView 是用数据库中的元素填充的,这些元素首先放入游标中,这样:

private void displayListView() {

    // getExtra
    Bundle bundle = getIntent().getExtras();
    String title = bundle.getString("title", "Choose here :");
    String inInterval = bundle.getString("inInterval");
    Log.d(TAG, "inInterval = " + inInterval);
    poititle.setText(title);
    // put the results of the method in a cursor
    c = dbHelper.findPoiInTable(inInterval);
    displayCursor();
} 

private void displayCursor() {

    String[] columns = new String[] { DatabaseAdapter.COL_NAME,
            DatabaseAdapter.COL_STREET, DatabaseAdapter.COL_WEBSITE,
            DatabaseAdapter.COL_TELEPHONE, DatabaseAdapter.COL_REMARKS,
            DatabaseAdapter.COL_PRICE, DatabaseAdapter.COL_MOBILE };
    int[] to = new int[] { R.id.name, R.id.street, R.id.website,
            R.id.telephone, R.id.remarks, R.id.price, R.id.mobile };
    cursorAdapter = new SimpleCursorAdapter(this, R.layout.poi_info, c,
            columns, to, 0);

    ListView listView = (ListView) findViewById(R.id.poilistview);
    // Assign adapter to ListView
    listView.setAdapter(cursorAdapter);

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        // Comportement des éléments de la listview
        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {

            Intent i = new Intent(getApplicationContext(),
                    POIActivity.class);

            String name = ((TextView) view.findViewById(R.id.name))
                    .getText().toString();
            String street = ((TextView) view.findViewById(R.id.street))
                    .getText().toString();
            String website = ((TextView) view.findViewById(R.id.website))
                    .getText().toString();
            String telephone = ((TextView) view
                    .findViewById(R.id.telephone)).getText().toString();
            String remarks = ((TextView) view.findViewById(R.id.remarks))
                    .getText().toString();
            String price = ((TextView) view.findViewById(R.id.price))
                    .getText().toString();
            String mobile = ((TextView) view.findViewById(R.id.mobile))
                    .getText().toString();
            // i.putExtra(ID_EXTRA, name) ;
            i.putExtra(ID_NAME, name);
            i.putExtra(ID_STREET, street);
            i.putExtra(ID_WEBSITE, website);
            i.putExtra(ID_TELEPHONE, telephone);
            i.putExtra(ID_REMARKS, remarks);
            i.putExtra(ID_PRICE, price);
            i.putExtra(ID_MOBILE, mobile);
            startActivity(i);
        }

    });

    int numberResults = listView.getCount();
    listviewCount.setText("( " + numberResults + " results ) : ");
}  

我正在寻找最简单的方法来指定我希望结果按单词(名称/ID_NAME)的字母顺序显示。所以我的问题是,有没有办法添加一行:

sortOrder(name, byAlph)

最佳答案

查询数据库时,只需加入“ORDER BY ID_NAME”即可。

或者如果你想使用 query builder

关于android - 按字母顺序(来自数据库)使用光标中的内容对 ListView 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15916890/

相关文章:

Android Studio 0.2.6 更新破坏了我的项目,要求我设置 jdk

WordPress:默认按自定义帖子类型列排序

c# - 在 C# 中禁用 ListView,但仍显示当前选择

java - 定义的 TextView 上出现 NullPointerException

android - 使用 IntelliJ 管理大型 Android 项目

javascript - 在捷克语中对数组进行排序,localeCompare

java - Android Listview 无法正常工作?

android - 添加向右滑动删除 ListView 项目

android - Android:如何使gradle离线获得特定的依赖关系,而其他在线?

asp.net-mvc - ASP.NET MVC。实现持久排序的干净方法?