0

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

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

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

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

这显示了我预期的信息。

我还检查了支持我的适配器的数据是否有空条目、新行等。

我在 Adapter 中的 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;
    }

下面是演示问题的图像(红色区域):

在此处输入图像描述

4

3 回答 3

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;
}
于 2012-12-17T00:31:48.037 回答
0

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

于 2012-12-17T20:11:09.167 回答
0

对于 中出现的不需要的空列表项ListView,我尝试了以下操作:

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

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

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

于 2014-11-13T11:40:18.753 回答