Android我需要在数组的中间字符串的中间1个Superscript字符

Android I Need 1 Superscript Character in the MIDDLE of a String in the Middle of an Array

本文关键字:中间 字符串 Superscript 字符 1个 数组 Android      更新时间:2023-09-26

现在我看到了很多选项,但它们都不适合我,或者对我来说太间接了,无法推断出我需要什么。

我有一个列表视图,只有少数地方需要使用上标6,但我一辈子都找不到在数据列表数组中这样做的方法。。。

活动背后的主要java:

    Cadence_list cadence_list_data[] = new Cadence_list[] {
        new Cadence_list("Perfect Authentic", "V→I", "V→i", "strongest", "must been in root position with tonic doubled in soprano", "definitive end of a section/piece"),
        new Cadence_list("Imperfect Authentic", "V→I", "V→i", "extremely strong", "V to tonic with one or more inverted or not containing tonic in soprano; V7, vii° and vii°⁶ subsitute for V", "firm end of a section/piece"),
        new Cadence_list("Half", "any→V", "any→V", "weak", "---", "creates a desire to continue on"),
        new Cadence_list("Phrygian Half", "---", "vi⁶→V", "weak", "V7 can substitute for V", "creates desire to continue, particularly to a faster section"),
        new Cadence_list("Lydian Half", "---", "iv⁶→V", "weak", "entire iv⁶ chord is raised ½ step", "exactly like Phryigian half, only with a more discordant beginning"),
        new Cadence_list("Plagal", "IV→I or ii⁶→I", "iv→i", "weak", "usually preceeded or followed by stronger cadence", "reverential sound requiring absolution with or following a stronger cadence"),
        new Cadence_list("Deceptive", "V→not I", "V→not i", "moderate", "cannot go to I in major or i in minor", "generates feeling for resolution then denies resolution, causing unease")
    };
    Cad_listAdapter adapter = new Cad_listAdapter(this,
        R.layout.cad_list_layout, cadence_list_data);
    cad_list = (ListView)findViewById(R.id.cad_list);
    View header = (View)getLayoutInflater().inflate(R.layout.cad_list_head, null);
    cad_list.addHeaderView(header);
    cad_list.setAdapter(adapter);

自定义构造函数(Cadence_list):

    public class Cadence_list {
        public String cad_name;
        public String maj_prog;
        public String min_prog;
        public String strength;
        public String restrict;
        public String feel;
        public Cadence_list() {
            super();
    }
    public Cadence_list(String cad_name, String maj_prog, String min_prog, String strength, String restrict, String feel) {
        super();
        this.cad_name = cad_name;
        this.maj_prog = maj_prog;
        this.min_prog = min_prog;
        this.strength = strength;
        this.restrict = restrict;
        this.feel = feel;
        }
    }

自定义适配器(Cad_listAdapter):

    public class Cad_listAdapter extends ArrayAdapter<Cadence_list> {
        Context context;
        int layoutResourceId;
        Cadence_list data[] = null;

    public Cad_listAdapter(Context context, int layoutResourceId, Cadence_list[] data) {
        super(context, layoutResourceId, data);
        this.layoutResourceId = layoutResourceId;
        this.context = context;
        this.data = data;   
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View row = convertView;
        Cad_listHolder holder = null;

        if (row == null) {
            LayoutInflater inflater = ((Activity)context).getLayoutInflater();
            row = inflater.inflate(layoutResourceId, parent, false);
            holder = new Cad_listHolder();
            holder.txtTitle1 = (TextView)row.findViewById(R.id.cad_name);
            holder.txtTitle2 = (TextView)row.findViewById(R.id.maj_prog);
            holder.txtTitle3 = (TextView)row.findViewById(R.id.min_prog);
            holder.txtTitle4 = (TextView)row.findViewById(R.id.restrict);
            holder.txtTitle5 = (TextView)row.findViewById(R.id.strength);
            holder.txtTitle6 = (TextView)row.findViewById(R.id.feel);
            row.setTag(holder);
        }
        else {
            holder = (Cad_listHolder)row.getTag();
        }
        Cadence_list cadence_list = data[position];
        holder.txtTitle1.setVisibility(View.VISIBLE);
        holder.txtTitle2.setVisibility(View.VISIBLE);
        holder.txtTitle3.setVisibility(View.VISIBLE);
        holder.txtTitle4.setVisibility(View.VISIBLE);
        holder.txtTitle5.setVisibility(View.VISIBLE);
        holder.txtTitle6.setVisibility(View.VISIBLE);
        holder.txtTitle1.setText(cadence_list.cad_name);
        holder.txtTitle2.setText(cadence_list.maj_prog);
        holder.txtTitle3.setText(cadence_list.min_prog);
        holder.txtTitle4.setText(cadence_list.restrict);
        holder.txtTitle5.setText(cadence_list.strength);
        holder.txtTitle6.setText(cadence_list.feel);
        return row;
    }
    class Cad_listHolder {
        TextView txtTitle1;
        TextView txtTitle2;
        TextView txtTitle3;
        TextView txtTitle4;
        TextView txtTitle5;
        TextView txtTitle6;
    }
}

所以你可以看到它们在哪里,在数据数组的内部。我怎样才能让它们发挥作用?

我在这里使用HTML链接。上标html标签<sup></sup>标签用于引入上标符号,其中"6"(最简单的)正则表达式用于将6的所有实例替换为6。我相信您可以想出更好、更强大的正则表达式来控制输出。

这是你应该尝试的代码:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View row = convertView;
    Cad_listHolder holder = null;

    if (row == null) {
        LayoutInflater inflater = ((Activity)context).getLayoutInflater();
        row = inflater.inflate(layoutResourceId, parent, false);
        holder = new Cad_listHolder();
        holder.txtTitle1 = (TextView)row.findViewById(R.id.cad_name);
        holder.txtTitle2 = (TextView)row.findViewById(R.id.maj_prog);
        holder.txtTitle3 = (TextView)row.findViewById(R.id.min_prog);
        holder.txtTitle4 = (TextView)row.findViewById(R.id.restrict);
        holder.txtTitle5 = (TextView)row.findViewById(R.id.strength);
        holder.txtTitle6 = (TextView)row.findViewById(R.id.feel);
        row.setTag(holder);
    }
    else {
        holder = (Cad_listHolder)row.getTag();
    }
    Cadence_list cadence_list = data[position];
    holder.txtTitle1.setVisibility(View.VISIBLE);
    holder.txtTitle2.setVisibility(View.VISIBLE);
    holder.txtTitle3.setVisibility(View.VISIBLE);
    holder.txtTitle4.setVisibility(View.VISIBLE);
    holder.txtTitle5.setVisibility(View.VISIBLE);
    holder.txtTitle6.setVisibility(View.VISIBLE);
    holder.txtTitle1.setText(Html.fromHtml(cadence_list.cad_name.replaceAll("6", "<sup>6</sup>")));
    holder.txtTitle2.setText(Html.fromHtml(cadence_list.maj_prog.replaceAll("6", "<sup>6</sup>")));
    holder.txtTitle3.setText(Html.fromHtml(cadence_list.min_prog.replaceAll("6", "<sup>6</sup>")));
    holder.txtTitle4.setText(Html.fromHtml(cadence_list.restrict.replaceAll("6", "<sup>6</sup>")));
    holder.txtTitle5.setText(Html.fromHtml(cadence_list.strength.replaceAll("6", "<sup>6</sup>")));
    holder.txtTitle6.setText(Html.fromHtml(cadence_list.feel.replaceAll("6", "<sup>6</sup>")));
    return row;
}