我想在ListView中添加单行。当我运行下面的代码时,添加了两行,一行包含我要添加的文本,另一行包含空行。为什么要添加空的? (行[0]是一个文件,其中包含( for now )1行)
listAdapter = new ArrayAdapter<String>(getApplicationContext(),R.layout.listviewrow, R.id.txt_listviewItem, lines){
@Override
public View getView(int position, View convertView, ViewGroup parent){
View myView = convertView;
if (myView == null) {
LayoutInflater li = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
myView = li.inflate(R.layout.listviewrow, null);
} else {
TextView txt_listviewItem = (TextView)myView.findViewById(R.id.txt_listviewItem);
txt_listviewItem.setText(lines[0]);
}
return myView;
};
...
listView.setAdapter(listAdapter);
当我调试时,listview.setAdapter(listAdapter)在运行getView代码之前和之后之前被称为。为什么?我只打电话一次。
答案 0 :(得分:1)
您使用Viewholder来避免重复。
答案 1 :(得分:0)
只是一个疯狂的猜测,但你的文本文件在第二行包含“新行”字符吗?或者,我应该说,你的文本文件确实有一行或两行,其中第二行只是一个\ n字符?
答案 2 :(得分:0)
试试这个
listAdapter = new ArrayAdapter<String>(getApplicationContext(),R.layout.listviewrow, R.id.txt_listviewItem, lines){
@Override
public View getView(int position, View convertView, ViewGroup parent){
View myView = convertView;
if(myView==null){
LayoutInflater li = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
myView = li.inflate(R.layout.listviewrow, null);
TextView txt_listviewItem = (TextView)myView.findViewById(R.id.txt_listviewItem);
txt_listviewItem.setText(lines[0]);
}
return myView;
};
listView.setAdapter(listAdapter);