Полужирный текст, если условие в списке

У меня есть данные, которые я получаю через asynctask, и я храню их в List как это (doInBackground):

HashMap<string, string=""> orden = new HashMap<string, string="">();
orden.put("ref",ref);
orden.put("of",of);
orden.put("amaituta",amaituta);
lLinea1.add(orden);
</string,></string,>

После этого я заполнил Listview как this onPostExecute

list=(ListView)findViewById(android.R.id.list);
 ListAdapter adapter = new SimpleAdapter(
 MyActivity.this, lLinea1,
 R.layout.of_list_item, new String[] { "ref","of", "amaituta" }, new int[] { R.id.ref, R.id.of, R.id.amaituta });


 list.setAdapter(adapter);

Все работает нормально, но мне нужно прочертить текст, если переменная "amaituta" равна 1.

Как я могу это сделать?

благодаря

2 ответа

Попробуйте этот путь, надеюсь, что это поможет вам решить вашу проблему.

1.Создайте один xml для элемента списка:

list_item.xml

<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="match_parent" android:orientation="vertical">

 <textview android:id="@+id/txtRef" android:layout_width="wrap_content" android:layout_height="wrap_content">

 <textview android:id="@+id/txtOf" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margintop="5dp">

 </textview></textview></linearlayout>

2.Создание пользовательского адаптера с помощью ViewHolder и установка основы стиля TextView в состоянии данных элемента списка в getView():

CustomAdapter.java

public class CustomAdapter extends BaseAdapter {

 private Context context;
 private ArrayList<hashmap<string, string="">> data;

 public CustomAdapter(Context context, ArrayList<hashmap<string, string="">> data) {
 this.data = data;
 this.context=context;
 }

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

 @Override
 public Object getItem(int position) {
 return data.get(position);
 }

 @Override
 public int getCount() {
 return data.size();
 }

 @Override
 public View getView(int position, View view, ViewGroup parent) {
 ViewHolder holder;
 if (view == null) {
 holder = new ViewHolder();
 view = LayoutInflater.from(context).inflate(R.layout.list_item, null);
 holder.txtRef = (TextView) view.findViewById(R.id.txtRef);
 holder.txtOf = (TextView) view.findViewById(R.id.txtOf);
 holder.txtAmaituta = (TextView) view.findViewById(R.id.txtAmaituta);

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

 holder.txtRef.setText(data.get(position).get("ref"));
 holder.txtOf.setText(data.get(position).get("of"));
 holder.txtAmaituta.setText(data.get(position).get("amaituta"));

 if (data.get(position).get("amaituta").equals("1")) {
 holder.txtAmaituta.setTypeface(null,Typeface.BOLD);
 } else {
 holder.txtAmaituta.setTypeface(null, Typeface.NORMAL);
 }
 return view;

 }

 class ViewHolder{
 TextView txtRef;
 TextView txtOf;
 TextView txtAmaituta;
 }

}
</hashmap<string,></hashmap<string,>

3.Как использовать пользовательский адаптер:

list=(ListView)findViewById(android.R.id.list);
CustomAdapter adapter = new CustomAdapter(MyActivity.this, lLinea1,);
list.setAdapter(adapter);


Это не будет работать с вашим SimpleAdapter. Вам нужно перезаписать часть getView и заполнить свой TextView самостоятельно, чтобы сделать что-то вроде этого:

TextView item = (TextView) v.findViewById(R.id.textView);
 item.setPaintFlags(item.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);

licensed under cc by-sa 3.0 with attribution.