2016-10-31 4 views
0

Ich habe diesen Code in meinem Adapter:Unterstrichen Textview in Listview

class CustomListView2 extends BaseAdapter { 
     private ArrayList<ListItem> listData; 
     private LayoutInflater layoutInflater; 
     private Context context; 
     int hasil; 
     public CustomListView2(Context context, ArrayList<ListItem> listData) { 
      this.listData = listData; 
      layoutInflater = LayoutInflater.from(context); 
      this.context = context; 
     } 

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

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

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

     public View getView(int position, View convertView, ViewGroup parent) { 
      final ViewHolder holder; 
      if (convertView == null) { 
       convertView = layoutInflater.inflate(R.layout.history_listview, null); 
       holder = new ViewHolder(); 
       holder.no_order = (TextView) convertView.findViewById(R.id.no_order); 
       holder.status_order = (TextView) convertView.findViewById(R.id.status_order); 
       holder.tgl_antar = (TextView) convertView.findViewById(R.id.tgl_antar); 
       holder.check_order = (CheckBox) convertView.findViewById(R.id.chkBatal); 
       holder.layoutHistory = (LinearLayout) convertView.findViewById(R.id.layoutHistory); 
       convertView.setTag(holder); 

      } else { 
       holder = (ViewHolder) convertView.getTag(); 
      } 

     if (mapStatus.containsKey(position)) 
     { 
      holder.status_order.setPaintFlags(holder.status_order.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); 
      holder.status_order.setEnabled(true); 
     } 

Und ich erklärte dies in globalen Variablen:

Map<Integer,String> mapStatus = new HashMap<Integer,String>(); 

Was im Binden nur eine Textview zu machen, ist unterstrichen zu werden, basierend auf Position, die ich in HashMap gesetzt habe.

Aber nachdem ich die Listenansicht scrollt, wird auch die andere Textansicht unterstrichen.

Wie behebt man das?

Antwort

0

Das liegt daran, dass Ihr Ansichtshalter Ihre Ansicht wieder verwendet. Versuchen Sie, ein else bedingten mit einem entgegengesetzten Betrieb hinzuzufügen, die die unterstrichenen entfernen:

holder.status_order.setPaintFlags(holder.status_order.getPaintFlags() & !Paint.UNDERLINE_TEXT_FLAG); 

Nicht sicher, ob & wird wie folgt verwendet.

0

Verwendung SpannableString:

String mystring= mapStatus.getValue().toString(); 
SpannableString content = new SpannableString(mystring); 
content.setSpan(new UnderlineSpan(), 0, mystring.length(), 0); 
yourtextview.setText(content); 
Verwandte Themen