在ListView

时间:2016-10-31 04:32:18

标签: android 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);
        }

我在全局变量中声明了这个:

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

根据我在HashMap中放置的位置,使文本视图加下划线是什么意思。

但是在滚动列表视图后,其他文本视图也会加下划线。

如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

这是因为您的观看者正在重复使用您的观点。 尝试使用相反的操作添加else条件,删除下划线:

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

不确定&是否像这样使用。

答案 1 :(得分:0)

使用SpannableString:

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