2016-05-30 12 views
0

ListViewに単一の行を追加します。以下のコードを実行すると、2行追加されます.1行には追加したいテキストと空の1行が追加されます。空のものがなぜ追加されたのですか?私はデバッグする場合(ライン[0]今ため(を持つファイルである)、その中に1行)Listviewは項目を2回追加します

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

'lines'の内容は何ですか? –

+0

そして、デバッガがsetAdapter行を押すと、アダプタ内のすべてのオブジェクトに対してgetViewが呼び出され、setAdapterに戻ります... setAdapterは2回実行されません –

+0

コードを追加してくださいあなたが投稿したコードではなく、どこかにある。 – JonasCz

答えて

0

あなたのテキストファイルには2行目に「改行」文字が含まれていますか?あるいは、私の言うべきことですが、あなたのテキストファイルは、実際には、1行または2行のうち、2行目が\ n文字ですか?

+0

どうやら、どういう意味ですか?' lines [0] 'だから、私は考えている1行だけを使うべきだと思う。 – willemjan92

+0

あなたがコード化した1行を取りますが、1行に改行文字が含まれていると思います。 –

+0

@ wilemjan92あなたが "lines [0]は(今のところ)1行のファイルです"と言っていますが、これはあなたが最初の行そのものではなく、それはあなたが今言っているものとは違う:)。 –

0

あなたは重複を避けるために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); 
1

を試してみてください。

関連する問題