为适配器中不存在的项目排序ListView适配器

时间:2018-04-13 18:54:48

标签: java android sorting listview adapter

我正在使用BaseAdapter来查看Android设备中已安装的应用。 在这个Listview中有更多的项目,但在适配器中只有两个,从第二个(包名称)我得到其他的

我正在搜索一种方法,为列表视图中的项目排序此适配器的项目,但不在适配器中。这里有我的代码:

class AppsAdapter extends BaseAdapter{

private Context mContext;
private List<Pair<String, List<String>>> mAppsWithPermission;


AppsAdapter(Context context, List<Pair<String, List<String>>> appsWithPermission) {
    mContext = context;
    mAppsWithPermission = appsWithPermission;
}

static class ViewHolder {
    TextView appName;
    TextView appPermissions;
    ImageView appIcon;
    TextView Lines;
    }

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

@Override
public Object getItem(int position) {
    return mAppsWithPermission.get(position);
}

@Override
public long getItemId(int position) {
    return mAppsWithPermission.get(position).hashCode();
}

@RequiresApi(api = Build.VERSION_CODES.N)
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    final ViewHolder holder;

    if (convertView == null) {
        convertView = LayoutInflater.from(mContext).inflate(R.layout.list_item, parent, false);
        holder = new ViewHolder();
        holder.appName = convertView.findViewById(R.id.list_item_appname);
        holder.appPermissions = convertView.findViewById(R.id.list_item_apppermissions);
        holder.appIcon = convertView.findViewById(R.id.list_item_appicon);
        holder.Lines = convertView.findViewById(R.id.list_item_lines);
        convertView.setTag(holder);

    } else {
        holder = (ViewHolder) convertView.getTag();
    }

    final Pair<String, List<String>> item = mAppsWithPermission.get(position);

    final PackageManager packageManager = mContext.getPackageManager();
    String mAppPer = item.second.toString();

    int lineCount = holder.appPermissions.getLineCount();
    Log.v("LINE_NUMBERS", lineCount+"");

    String strI = Integer.toString(lineCount);
    holder.Lines.setText(strI);

    if (mAppPer.matches("")) {
    holder.Lines.setText("0");
    }

    });
return convertView;
}
}

当你看到&#34; item.second&#34;它是包名。

你可以想到,我试图将整个适配器排序为holder.lines的后代值(所以StrI)。

这与其他讨论排序适配器的问题不同,因为我想为适配器排序外部值。 如果您需要进一步的信息,您只需要问我。

0 个答案:

没有答案