0

I'm coding an application and just trying to get a spannable string in a viewholder.My code works except that the police color doesn't change. Where do I go wrong ? Thanks

public class MyListAdapter extends ArrayAdapter<String[]>{

int groupid;
List<String[]> items;
Context context;
String test;

public MyListAdapter(Context context, int vg, int id, List<String[]> items){
    super(context,vg, id, items);
    this.context=context;
    groupid=vg;
    this.items=items;
}
static class ViewHolder {
    public TextView textid;

    //public TextView textname;
    //public TextView txtadresse;

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

    View rowView = convertView;
    if(rowView==null){
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        rowView= inflater.inflate(groupid, parent, false);
        ViewHolder viewHolder = new ViewHolder();
        viewHolder.textid = (TextView) rowView.findViewById(R.id.txtid);

        rowView.setTag(viewHolder);
    }

    // Fill data
    ViewHolder holder = (ViewHolder) rowView.getTag();
    String[] row=items.get(position);
    test = row[0].toString();
    Spannable pouf = new SpannableString(test);
    pouf.setSpan(new ForegroundColorSpan(Color.RED),0,5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

    holder.textid.setText(pouf+" - "+row[1]+"\n"+row[2]);
    rowView.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            String[] record = items.get(position);


            Intent intent=new Intent(context, Main3Activity.class);
            intent.putExtra("numéro", record[0]);
            intent.putExtra("localite", record[1]);
            intent.putExtra("adresse", record[2]);
            context.startActivity(intent);
        }

    });
    return rowView;


}
}
Ravi
  • 34,851
  • 21
  • 122
  • 183
filoman
  • 17
  • 6

1 Answers1

0

alright I found out my answer by myself... My mistake was to use the concat for span, instead we must use Textutils to concat with spannable contents in case anybody would be wondering I post my code :

public class MyListAdapter extends ArrayAdapter<String[]>{

int groupid;
List<String[]> items;
Context context;
String test;
String test2;
String test3;

public MyListAdapter(Context context, int vg, int id, List<String[]> items){
    super(context,vg, id, items);
    this.context=context;
    groupid=vg;
    this.items=items;
}
static class ViewHolder {
    public TextView textid;


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

    View rowView = convertView;
    if(rowView==null){
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        rowView= inflater.inflate(groupid, parent, false);
        ViewHolder viewHolder = new ViewHolder();
        viewHolder.textid = (TextView) rowView.findViewById(R.id.txtid);

        rowView.setTag(viewHolder);
    }

    // Fill data
    ViewHolder holder = (ViewHolder) rowView.getTag();
    String[] row=items.get(position);
    test = row[0].toString();
    test2 = row[1].toString();
    test3 = row[2].toString();
    SpannableString pouf = new SpannableString(test);
    pouf.setSpan(new RelativeSizeSpan(1.5f), 0, pouf.length(), 0);
    SpannableString pouf2 = new SpannableString(test2);
    pouf2.setSpan(new RelativeSizeSpan(1.5f), 0, pouf2.length(), 0);
    SpannableString pouf3 = new SpannableString(test3);
    pouf3.setSpan(new RelativeSizeSpan(1f), 0, pouf3.length(), 0);


    holder.textid.setText(TextUtils.concat(pouf," - ",pouf2,"\n",pouf3));
    rowView.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            String[] record = items.get(position);


            Intent intent=new Intent(context, Main3Activity.class);
            intent.putExtra("numéro", record[0]);
            intent.putExtra("localite", record[1]);
            intent.putExtra("adresse", record[2]);
            context.startActivity(intent);
        }

    });
    return rowView;


}
filoman
  • 17
  • 6