java - Android 我需要在数组中间的字符串中间有 1 个上标字符

标签 java javascript android character-encoding

现在我看到了很多选项,但没有一个对我有用,或者对我来说太间接了,无法推断出我需要的东西。

我有一个 ListView ,只有少数几个地方需要使用上标 6,但是我无法终生找到在数据列表数组中执行此操作的方法...

Activity 背后的主要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 Link这里。上标html标签<sup></sup>标签用于引入上标符号,其中“6”(最简单的)正则 exp 用于替换 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;

}

关于java - Android 我需要在数组中间的字符串中间有 1 个上标字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17781106/

相关文章:

javascript - 音频 HTML5 检查是否所有音频元素都已完全加载

android - 如何在标准滑动+选项卡模型下的选项卡中使用布局 xml 文件

android - 如何修复 java.lang.NoClassDefFoundError : Failed resolution of: Lcom/android/installreferrer/api/InstallReferrerStateListener; error

java - Activity崩溃生命周期方法——android

javascript - React-Select onClick 多标签防止打开下拉菜单

javascript - Express js路由错误("Cannot GET/")

Android ViewBinding 错误 : Cannot access class 'android.widget.no_name_in_PSI_3d19d79d_1ba9_4cd0_b7f5_b46aa3cd5d40'

java - 如何在数据库中保存特殊字符

Java String.format - 方法格式(String,Object [])不适用于参数格式(String,float)

java - 验证 Mockito.when 仍需要调用