列表视图添加项目两次



我想将单行添加到我的列表视图中。当我运行下面的代码时,添加了 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);

最新更新