2016-10-31 26 views
0

に私は私のアダプタでこのコードがあります。下線TextViewには、リストビュー

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); 
     } 

を、私は、これはグローバル変数に宣言:

は下線に基づいばかりのTextViewを作るためだけイム何抱き合わせで
Map<Integer,String> mapStatus = new HashMap<Integer,String>(); 

私がHashMapに入れた位置。

しかし、リストビューをスクロールした後、もう一方のテキストビューにもアンダーラインが表示されます。

これを修正するにはどうすればよいですか?

答えて

0

あなたのビュー所有者があなたのビューを再利用しているからです。 下線を削除する逆の動作でelse条件を追加してください:

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

わからない&場合は、次のように使用されています。

0

使用SpannableString:

String mystring= mapStatus.getValue().toString(); 
SpannableString content = new SpannableString(mystring); 
content.setSpan(new UnderlineSpan(), 0, mystring.length(), 0); 
yourtextview.setText(content); 
関連する問題