ListView中出现不需要的偶然空项目

时间:2012-12-17 00:18:18

标签: android listview empty-list

我有一个ListView,其中每一行都是TextView,并显示一行文本。我遇到了一个问题,偶尔出现一个不需要的空行。列表滚动经过该特定区域后,空行消失。

我在调试器中暂停应用后,使用以下代码验证了我的列表行包含正确的信息。输出中没有任何内容显示为空或null等。

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

似乎问题是由于在ListView中使用match_parent我的TextView宽度引起的。将其更改为wrap_content似乎已修复它。

答案 2 :(得分:0)

对于ListView中发生的不需要的空列表项,我尝试了这个:

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

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

'position'是我在View getView方法中作为参数得到的,因为我正在实现一个自定义适配器。 它对我来说很好用!