在自定义列表视图中显示两种不同颜色的文本视图文本

时间:2014-08-15 04:47:05

标签: android listview textview android-custom-view spannablestring

我正在开展一个项目,我需要显示并附加两个字符串" name"和"消息"在自定义lisview的单一textview中有两种不同的颜色。为此,我使用了如下的Html文本:

String text = "<font color=#cc0029>Chandru</font> <font color=#ffcc00>You have got a notification</font>";
nameTedt.setText(Html.fromHtml(text)); <br>

上面的代码就像魅力一样,但我面临的问题是我的自定义列表视图中的性能问题(即滚动不顺畅)。我甚至尝试了如下的spannable文本:

TextView nameTedt= (TextView)findViewById(R.id.mytextview01);    
Spannable wordtoSpan = new SpannableString("Andrew", You have got a message form simmons);          
wordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE), 0, 6, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);    
nameTedt.setText(wordtoSpan); <br>  

但问题的另一个问题始于我不知道字符串的确切大小&#34; name&#34;和&#34;消息&#34;。它可以是任何大小,因为我使用JSON解析它。我想使用两种不同颜色的spannable文本来表示字符串的任意数量的字符。任何其他解决方案也将不胜感激。

我的要求的总内容如下。

  

Chandru:今天早上你收到了来自艾莎的消息。如果可能请尽快给她回复。感谢

我希望可能有两个文本视图。但是我不知道如何处理它,因为我的消息文本应该包含在我名字下面的下一行&#34; chandru&#34;。请建议我继续进行布局。

我也发布了我的基础适配器类,因为html内容的性能很低

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

            View v = convertView;
            ViewHolder holder = null;
            if (v == null) {
                v = mLayoutInflater
                        .inflate(R.layout.view_subview, null);
                holder = new ViewHolder();
                holder.nameTedt= (TextView) v
                        .findViewById(R.id.nameTedt);


                v.setTag(holder);
            } else {
                holder = (ViewHolder) v.getTag();
            }
                      notifyTypeId = NotificationAllAL.get(position).getNotifyType().getNotifytypeId();

            if(notifyTypeId == 1){  

String text = "<font color=#cc0029>"namestring"</font> <font color=#ffcc00>You have got a notification</font>";
nameTedt.setText(Html.fromHtml(text));



            }else if(notifyTypeId == 2){  
String text = "<font color=#cc0029>"namestring"</font> <font color=#ffcc00>You have got a email</font>";
nameTedt.setText(Html.fromHtml(text));  

            }else if(notifyTypeId == 3){  
String text = "<font color=#cc0029>"namestring"</font> <font color=#ffcc00>You have got a message</font>";
nameTedt.setText(Html.fromHtml(text)); 

            }else if(notifyTypeId == 4){
String text = "<font color=#cc0029>You have got a call from</font> <font color=#ffcc00>"namestring"</font>";
nameTedt.setText(Html.fromHtml(text));    

            }  <br> 

名称字符串应为蓝色,消息字符串应为橙色。

0 个答案:

没有答案