android - 按应用程序名称而不是包名称的字母顺序对 ListView 进行排序

标签 android listview sorting

我正在尝试让这个 ListView 正常工作,并且我正在尝试按应用程序名称而不是包名称的字母顺序对列表进行排序。

主 Activity .java

// load list application
mListAppInfo = (ListView)findViewById(R.id.lvApps);
// create new adapter
AppInfoAdapter adapter = new AppInfoAdapter(this, Utilities.getInstalledApplication(this), getPackageManager());
// set adapter to list view        
mListAppInfo.setAdapter(adapter);

AppInfoAdapter.java

public AppInfoAdapter(Context c, List list, PackageManager pm) {
    mContext = c;
    mListAppInfo = list;
    mPackManager = pm;
}

public View getView(int position, View convertView, ViewGroup parent) {
    // get the selected entry
    ApplicationInfo entry = (ApplicationInfo) mListAppInfo.get(position);

    // reference to convertView
    View v = convertView;

    // inflate new layout if null
    if(v == null) {
        LayoutInflater inflater = LayoutInflater.from(mContext);
        v = inflater.inflate(R.layout.layout_appinfo, null);
    }

    // load controls from layout resources
    ImageView ivAppIcon = (ImageView)v.findViewById(R.id.ivIcon);
    TextView tvAppName = (TextView)v.findViewById(R.id.tvName);
    TextView tvPkgName = (TextView)v.findViewById(R.id.tvPack);

    // set data to display
    ivAppIcon.setImageDrawable(entry.loadIcon(mPackManager));
    tvAppName.setText(entry.loadLabel(mPackManager));
    tvPkgName.setText(entry.packageName);

    // return view
    return v;
}

最佳答案

修改您的 Utilities.getInstalledApplication(this) 以使用 Collections.sort():

public static List<ApplicationInfo> getInstalledApplication(Context context) {
    PackageManager packageManager = context.getPackageManager();
    List<ApplicationInfo> apps = packageManager.getInstalledApplications(0);
    Collections.sort(apps, new ApplicationInfo.DisplayNameComparator(packageManager));
    return apps;
}

关于android - 按应用程序名称而不是包名称的字母顺序对 ListView 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11617627/

相关文章:

android - 我应该如何解决这个崩溃问题?

Android通知振动时间

Android Google Maps V2 更改我的位置图标

c# - 使用 UWP 通过拖放重新排序可绑定(bind) ListView

algorithm - 随机快速排序划分概率

javascript - 按两个不同的值对 JavaScript 对象数组进行排序

javascript - Ionic + Cordova InappBrowser - 输入类型=文件不工作

android - 使用多个可点击按钮在 ListView 中获取精确点击的按钮

listview - Flutter ListView 没有更新

java - 在 Java 中使用比较对二进制数组进行排序