我有一个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;
}
下面是一个显示问题的图像(红色区域):
答案 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方法中作为参数得到的,因为我正在实现一个自定义适配器。 它对我来说很好用!