1

Jeff Sharkey の SeparatedListAdapterを使用していて、テキストの色を設定したいのですが、方法がわかりません。

アダプターの背景を説明するために、単純な Android リストに似た BaseAdapter をサブクラス化しました。だから、私はこのような方法でテキストの色を設定しようとしましたgetView()(コメントセクションの間に私の試みを見ることができます):

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    ViewHolder holder;

    int sectionnum = 0;
    for(Object section : this.sections.keySet()) {
        Adapter adapter = sections.get(section);
        int size = adapter.getCount() + 1;



        // check if position inside this section
        if(position == 0) return headers.getView(sectionnum, convertView, parent);
        if(position < size)
        {
            /***** I added this section to try to set the text color ***/

            TextView captionTV = (TextView)adapter.getView(position, convertView, parent).findViewById(R.id.list_complex_caption);
            captionTV.setTextColor(R.color.black;);

            TextView titleTV = (TextView)adapter.getView(position, convertView, parent).findViewById(R.id.list_complex_title);
            titleTV.setTextColor(R.color.black;);

            /***** end add *****/               

            return adapter.getView(position - 1, convertView, parent);
        }

        // otherwise jump into next section
        position -= size;
        sectionnum++;
    }
    return null;
}

しかし、最初のセルのテキストの色を設定しますが、残りのセルには設定しません。

何か案は?

4

2 に答える 2

1

うーん。気の利いたアダプター。

ここで最初に注意すべきこと -Viewあなたがやっている方法で s を変更することは、さまざまなセクション アダプターで使用するレイアウトに任せておくのが最善です。つまり、黒のテキストが必要な場合は、黒のテキストを持つ項目レイアウトを使用します。

とにかくコードでそれを行うには#getView(int, View, ViewGroup)、サブセクションアダプターを繰り返し呼び出すべきではなく、代わりに次のようにします:

/**
 * {@inheritDoc}
 */
public View getView(int position, View convertView, ViewGroup parent) {
    int sectionnum = 0;
    for(Object section : this.sections.keySet()) {
        Adapter adapter = sections.get(section);
        int size = adapter.getCount() + 1;

        // check if position inside this section
        if(position == 0) return headers.getView(sectionnum, convertView, parent);
        if(position < size){
            View view = adapter.getView(position - 1, convertView, parent);
            TextView captionTV = (TextView) view.findViewById(R.id.list_complex_caption);
            captionTV.setTextColor(R.color.black);
            TextView titleTV = (TextView) view.findViewById(R.id.list_complex_title);
            titleTV.setTextColor(R.color.black);
            return view;
        }

        // otherwise jump into next section
        position -= size;
        sectionnum++;
    }
    return null;
}
于 2012-01-05T09:53:06.147 に答える
0

bindView オーバーライドでそれを実行してみてくださいbindView関数など

@Override
public void bindView(View v, Context context, Cursor c) {

    String name = c.getString(nameCol);

    TextView captionTV = (TextView) v.findViewById(R.id.list_complex_caption);
    captionTV.setTextColor(R.color.black);
}
于 2012-01-05T10:10:02.043 に答える