Стиль Android ArrayAdapter

Мой вопрос заключается в том, как изменить цвет фона (или цвет текста) первых 6 символов каждой ячейки в моем списке? (первые 6 символов содержат дату. Пример "01 января: данные о бла-бла-бла-бла...")

У меня есть один список на моей странице, и он динамически заполняется из вызова веб-службы SOAP

SoapObject oResponse = (SoapObject)soapEnvelope.getResponse();
 ArrayList<string> oStringList = new ArrayList<string>();
 for(int i = 0; i < oResponse.getPropertyCount(); i++)
 oStringList.add(oResponse.getProperty(i).toString()); 
 lv.setAdapter(new ArrayAdapter<string>(this,android.R.layout.simple_list_item_1, oStringList ));
</string></string></string>

Любые рекомендации будут оценены.

4 ответа

Ответ dldnh прав, но другой способ - иметь TextView рядом друг с другом, один для даты и один для вашего фактического текста. Так что-то вроде этого:

<linearlayout android="" +id="rowLayout" android:width="wrap_content" android:height="wrap_content" android:orientation="horizontal">
 <textview android="" +id="txtDate" android:text="Jan 01" android:textcolor="@color/red" android:width="wrap_content" android:height="wrap_content">
 </textview></linearlayout>

Поэтому в вашем адаптере переопределите getView(int position, View v) (я уверен, что это было), и вы можете установить там текст.


Думайте, что вы должны создать свой собственный макет ArrayAdapter.

В этом новом макете каждая информация из списка имеет две части: (два текстовых поля), и вы помещаете их в horizontal linearlayout. первый текст, вы делаете свой атрибут так, как вы говорите.


Я дам вам простое решение для этого. Просто напишите код, чтобы изменить цвет для блока текста в html. что-то вроде

String s = "<text color="red">abcdef</text>"+"continuition part will be placed here";

TextView Object.setText(Html.toHtml(s));

Я не знаю точный код в Html, чтобы точно изменить цвет текста. Просто пойдите в Google.

Это решит вашу проблему.


при настройке текста вашего TextView вы используете Spannable чтобы вы могли изменить цвет пролета. здесь пример, устанавливающий цвет переднего плана на красный для шести символов. вы будете использовать этот код в getView, а tv - TextView для этой конкретной ячейки.

TextView tv = ...
String text = "Jan 01: Blah blah blah data data...";
int startColor = 0;
int endColor = 6;
int color = 0xffff0000;
Spannable spannable = new SpannableString(text);
spannable.setSpan(new ForegroundColorSpan(color), startColor, endColor, 0);
tv.setText(spannable);

licensed under cc by-sa 3.0 with attribution.