首页 > 解决方案 > Android Listview 按字母顺序排列

问题描述

我有下面的代码。有了它,所有设备应用程序都加载到 Listview 中,一切正常。但我希望它们根据应用程序的名称按字母顺序加载。

我试过收藏,但我不知道把它放在哪里。一些帮助?

我也在 recyclerview 中完成了所有这些操作,但是当列表滚动和应用程序加载时,性能非常糟糕。于是决定在Listview上试一试,性能非常好。



    private ArrayList<HashMap<String, Object>> list1 = new ArrayList<>();
    private ArrayList<String> list11 = new ArrayList<>();
    private ArrayList<String> list12 = new ArrayList<>();
    private ArrayList<String> list13 = new ArrayList<>();
    private ArrayList<String> list14 = new ArrayList<>();

    private SearchView searchview1;
    private GridView listview1;
    @Override
    protected void onCreate(Bundle _savedInstanceState) {
        super.onCreate(_savedInstanceState);
        setContentView(R.layout.activity_main);
        initialize(_savedInstanceState);
        initializeLogic();
    }

    private void initialize(Bundle _savedInstanceState) {

    
        listview1 = (GridView) findViewById(R.id.listview1);

    }

    private void initializeLogic() {
        
        List<android.content.pm.PackageInfo> listn = getApplicationContext().getPackageManager().getInstalledPackages(0);
        for (android.content.pm.PackageInfo packageInfo : listn) {
            
            
            
            PackageManager pm = getPackageManager();
            
            if(pm.getLaunchIntentForPackage(packageInfo.packageName) == null){
                
                
            }else{
                list11.add(packageInfo.applicationInfo.loadLabel(getPackageManager()).toString());

                list12.add(packageInfo.packageName);
                list13.add(packageInfo.versionName);

                list14.add(String.valueOf(packageInfo.versionCode));
                
                {
                    HashMap<String, Object> _item = new HashMap<>();
                    _item.put("x", "x");
                    list1.add(_item);
                }

                {
                    HashMap<String, android.graphics.drawable.Drawable> _item = new HashMap<String, android.graphics.drawable.Drawable>();
                    _item.put("itm",packageInfo.applicationInfo.loadIcon(getPackageManager()));
                    list6.add(_item);
                }
            }
            
            
            
            }
                
        
            
            
            

        
        listview1.setAdapter(new Listview1Adapter(list1));
    }
    private ArrayList < HashMap < String, android.graphics.drawable.Drawable> > list6 = new ArrayList<>(); private void nothing() {

        listview1.setTextFilterEnabled (true);

    }

    @Override
    protected void onActivityResult(int _requestCode, int _resultCode, Intent _data) {

        super.onActivityResult(_requestCode, _resultCode, _data);

        switch (_requestCode) {

            default:
                break;
        }
    }

    public class Listview1Adapter extends BaseAdapter {
        ArrayList<HashMap<String, Object>> _data;
        public Listview1Adapter(ArrayList<HashMap<String, Object>> _arr) {
            _data = _arr;
        }

        @Override
        public int getCount() {
            return _data.size();
        }

        @Override
        public HashMap<String, Object> getItem(int _index) {
            return _data.get(_index);
        }

        @Override
        public long getItemId(int _index) {
            return _index;
        }
        @Override
        public View getView(final int _position, View _v, ViewGroup _container) {
            LayoutInflater _inflater = (LayoutInflater)getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View _view = _v;
            if (_view == null) {
                _view = _inflater.inflate(R.layout.list_apps, null);
            }

            final LinearLayout linear1 = (LinearLayout) _view.findViewById(R.id.linear1);
            final ImageView app_icon = (ImageView) _view.findViewById(R.id.app_icon);
            final TextView app_name = (TextView) _view.findViewById(R.id.app_name);
            final TextView app_pack = (TextView) _view.findViewById(R.id.app_pack);

            app_name.setText(list11.get((int)(_position)));
            app_pack.setText(list12.get((int)(_position)));
            app_icon.setImageDrawable(list6.get((int)_position).get("itm"));

            return _view;
        }
    }
}```

标签: javaandroidlistview

解决方案


推荐阅读