5

シンプルですが少しトリッキーです

list.setAdapter(new ArrayAdapter<String>(this,R.layout.double_row, R.id.doubleRow, articleItemsHelper));

articleItemsHelperStringの場合は機能しますが、HTML形式を使用したいので、articleItemsHelperのタイプがSpanedの場合、これアダプター)は機能しません。

ArrayList<Spanned> articleItemsHelper = new ArrayList<Spanned>();

解決策は何ですか?

編集:ここに解決策があります-カスタムアダプタ

private static class SpannedAdapter extends BaseAdapter {
     private LayoutInflater mInflater;
     private ArrayList<Spanned> mArticleList;

     public SpannedAdapter(Context context, ArrayList<Spanned> articleList) {
        mInflater = LayoutInflater.from(context);
        mArticleList = articleList;
     }

     public int getCount() {
         return mArticleList.size();
     }

     public Object getItem(int position) {
         return position;
     }

     public long getItemId(int position) {
         return position;
     }

     public View getView(int position, View convertView, ViewGroup parent) {
         ViewHolder holder;
         if (convertView == null) {
             convertView = mInflater.inflate(R.layout.single_row, null);
             holder = new ViewHolder();
             holder.text = (TextView) convertView.findViewById(R.id.singleRow);

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

         holder.text.setText(mArticleList.get(position));

         return convertView;
     }

     static class ViewHolder {
         TextView text;
     }
}

その後、定期的に電話してください

list.setAdapter(new SpannedAdapter(this, articleItemsHelper));

どこ

articleItemsHelper

ArrayList<Spanned>
4

2 に答える 2

1

古いスレッドですが、それを行う別の方法を見つけました。それは人々を助けることができます:

    simpleAdpt = new ArrayAdapter<Note>(this, R.layout.notelist, listeNotes ){
            public View getView(int position, View view, ViewGroup viewGroup)
            {
                View v = super.getView(position, view, viewGroup);
                Note n = (Note) this.getItem(position);
                ((TextView)v).setText(Html.fromHtml("<b>"+n.getTitre() + "</b> <br/>"+n.getNote()));
                 return v;
            }
    };
于 2014-07-15T19:16:10.250 に答える
0

これは、ArrayAdapter が行のテキストを設定する方法です。

    T item = getItem(position);
    if (item instanceof CharSequence) {
        text.setText((CharSequence)item);
    } else {
        text.setText(item.toString());
    }

ご覧のとおり、あなたの場合はtoStringメソッドを呼び出すことであり、それが機能しない理由です。したがって、先に進んで独自のアダプターを作成してください。この場合、選択の余地はありません。

于 2011-01-02T21:47:54.487 に答える