2015-05-30 2 views
0

Я пытаюсь поместить цвет и полужирным шрифтом слово, соответствующее слову из предложения в ArrayList items/value. что я сделал до сих пор, как показано ниже ... поэтому у меня есть переменная String, называемая фильтром «Hello». Теперь я хочу итерации через ArrayList itemList и найти «Hello» из элементов ArrayList и сделать его полужирным и синим.Сделать текст полужирным шрифтом в списке для заданного слова динамически

String filter = "Hello"; 
    String itemValue = "I just want to say Hello world! Hello"; 

    itemList = new ArrayList<String>(); 
    for(int i = 0; i<10; i++) 
    { 
     itemList.add("I just want to say Hello world! Hello"); 
    } 
    sentence = new ArrayList<String>(); 
    for(int j=0; j<itemList.size(); j++) 
    { 
     int startPos = itemList.get(j).toString().toLowerCase(Locale.US).indexOf(filter.toLowerCase(Locale.US)); 
     int endPos = startPos + filter.length(); 

     if (startPos != -1) // This should always be true, just a sanity check 
     { 
      Spannable spannable = new SpannableString(itemValue); 
      ColorStateList blueColor = new ColorStateList(new int[][] { new int[] {}}, new int[] { Color.BLUE }); 
      TextAppearanceSpan highlightSpan = new TextAppearanceSpan(null, Typeface.BOLD, -1, blueColor, null); 

      spannable.setSpan(highlightSpan, startPos, endPos, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
      tv.setText(spannable); 

      sentence.add(itemValue); 

      ListView lv = (ListView)findViewById(R.id.listView1); 
      //ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
       //  android.R.layout.simple_list_item_1, android.R.id.text1, sentence); 
      MyPerformanceArrayAdapter adapter = new MyPerformanceArrayAdapter(this, spannable, counterArrayList); 
      lv.setAdapter(adapter); 
     } 
     else 
      tv.setText(itemValue);     
    }    

ее не работает пожалуйста, вы можете помочь мне

+0

Вы должны использовать адаптер пользовательских ListView – Salmaan

+0

MyPerformanceArrayAdapter это мой пользовательский ListView адаптер. Как я могу это сделать, вы можете мне помочь – Jack

ответ

2

Вы должны сделать еще один конструктор передавая ему еще один аргумент String filter, который будет содержать строку, чтобы быть выделены жирным шрифтом.

Назначают его к другому элементу данных в arrayAdapter

Теперь при отображении просмотра, Вы должны заменить filter в каждом предложении. т.е. sentence.replace(filter, "<b>" + filter + "</b>")

И показать его в TextView как этот myTextView.setText(Html.fromHtml(sentence));

После этого все, что вам нужно сделать, это Reset Adapter

+0

Спасибо, я решил. – Jack