1

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

我所拥有的是一个列表视图,只有几个地方我需要使用上标 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;
    }

}

所以你可以看到它们在哪里,那是在一个数据数组里面。我怎样才能让那些工作?

4

1 回答 1

1

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

这是您应该尝试的代码:

@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;

}
于 2013-07-22T17:54:40.240 回答