我想将单行添加到我的列表视图中。当我运行下面的代码时,添加了 2 行,一行是我要添加的文本,另一行是空的。为什么要添加空的?(行[0]是一个文件,(目前)包含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代码运行之前和之后被调用。为什么?我只叫一次。
您可以使用Viewholder来避免重复。
只是一个疯狂的猜测,但是您的文本文件是否在第二行包含"换行符"字符?或者,我应该说,您的文本文件是否确实有一行或两行,其中第二行只是一个字符?
试试这个
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);