2012-12-17 3 views
0

У меня есть ListView, в котором каждая строка является TextView и отображает строку текста. Я получаю проблему, когда иногда появляется нежелательная пустая строка. Пустая строка уходит, как только список прокручивается мимо этой конкретной области.Нежелательный случайный пустой элемент, появляющийся в ListView

Я проверил строки списка, содержащие правильную информацию, используя следующий код после приостановки приложения в отладчике. Ничто на выходе не отображается пустым или нулевым и т. Д.

for (int i = 0; i<list.getChildCount(); i++) { 

    System.out.print((TextView) list.getChildAt(i)).getText()); 
} 

Это показывает информацию, которую я ожидал.

Я также проверил данные резервной мой адаптера для пустых записей, новых линий и т.д.

метода

Моего GetView() внутри адаптера заключается в следующем:

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     TextView t; 

     if (convertView == null) { 
      convertView = mInflator.inflate(R.layout.single_message_row, null); 
      t = (TextView) convertView; 
      t.setMovementMethod(LinkMovementMethod.getInstance()); 
      t.setTextSize(mMsgSize); 
     } 

     else { 
      t = (TextView) convertView; 
     } 

     CharSequence text = get(position); 
     t.setText(text); 

     return t; 
    } 

Ниже приводится изображение, демонстрирующее проблема (закрашенная область):

enter image description here

+0

Уверены ли вы, что там нет никаких возвратов строк? как в texttext \ n \ n \ n \ n \ n .. Это вызовет вашу проблему .. Ваш адаптер выглядит нормально – dymmeh

+0

Почему вы просто не вызываете 'text.toString(). trim()'? – waqaslam

+0

dymmeh: Да, я уверен. Сообщения поступают с сервера, и я явно воздерживаюсь от добавления \ n до конца, поскольку нет необходимости. Вака: Потому что это удалит цвета текста –

ответ

1

Try после изменения метода GetView как:

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View row = convertView; 
if(row==null){ 
    LayoutInflater inflater=getLayoutInflater(); 
    row=inflater.inflate(R.layout.single_message_row, parent, false); 

} 
    TextView t=(TextView)row.findViewById(R.id.yourtextview); 
    t.setText("position "+position); 
    t.setMovementMethod(LinkMovementMethod.getInstance()); 
    t.setTextSize(mMsgSize); 

    CharSequence text = get(position); 
    t.setText(text); 


     return row; 
} 
+0

Ум, объясняющий, что вы здесь делаете? Я ничего здесь не вижу, чтобы исправить его проблему. – dymmeh

+1

Я думаю, что это строка 'row = inflater.inflate (R.layout.single_message_row, parent, false);' – waqaslam

+0

Я попробую это изменение и отчитаюсь. Одно замечание - мой файл single_message_row.xml содержит только текстовое представление, поэтому нет необходимости делать findViewById и бросать в TextView. –

0

Похоже, проблема была вызвана использованием match_parent для моей ширины TextView в ListView. Смена его на wrap_content, похоже, исправила его.

0

Для нежелательного пустого элемента списка, происходящий в ListView, я попытался это:

  List<String> listofItems; 
     String strlist=listofItems.get(position); 

     if(strlist.isEmpty()) 
     { 
      remove(strlist); 
     } 

«положение» является то, что я получил в качестве параметра в методе View GetView, потому что я был реализацией пользовательского адаптера. все получилось отлично!

Смежные вопросы