java - 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;
}
}
}```
解决方案
推荐阅读
- xamarin.android - FirebaseInstanceId.Instance.Token 返回 null
- c# - 在 Xamarin.Forms 应用程序中嵌入 ar.js
- boost - 使用 Boost 1.68 / LLVM / VS2017 时出现“is_assignable”错误
- angular - 每列创建一个单选按钮组
- python - Smartsheet cell link object does not return a status
- git - VCS 文件颜色未在 Android Studio 中显示
- android - Android 模拟器 27.3.9:'WHvGetCapability 失败。hr=0x00000000 whpx_cap.HypervisorPresent?0'
- java - 在 map 函数中创建辅助 RDD
- sql - Mysql 创建插入过程语句不完整
- java - Elasticsearch Translog 已关闭错误