2011-01-02 3 views
5

간단하지만 작은 까다 롭습니다,어떻게 <Spanned>을 list.setAdapter에 넣을 까?

list.setAdapter(new ArrayAdapter<String>(this,R.layout.double_row, R.id.doubleRow, articleItemsHelper)); 
xItemsHelper xxxx articleItemsHelper 스팬이 (어댑터) doesn 일하지 마라.

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> 
입니다.

답변

0

이 ArrayAdapter와는 행의 텍스트를 설정하는 방법이다 : 당신이 볼 수 있듯이, 그것은 귀하의 경우에 할 것이다 무엇 toString 메소드를 호출하는 것입니다, 그것은 작동하지 않습니다 그 이유는

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

합니다. 자, 이제 직접 어댑터를 작성하십시오.이 경우 선택의 여지가 없습니다.

+1

아, TNX을. 나는 위의 게시물에 해결책을 게시했다. – svenkapudija

+0

정말 좋은데, 임마! – Cristian

0

올드 스레드하지만 내가 할 수있는 다른 방법을 발견, 그것은 사람들을 도울 수 있습니다

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; 
      } 
    }; 
관련 문제