0

各行がTextViewであるListViewがあり、テキストの行を表示します。不要な空の行が表示されることがあるという問題が発生しています。リストがその特定の領域を超えてスクロールすると、空の行は消えます。

デバッガーでアプリを一時停止した後、次のコードを使用して、リスト行に正しい情報が含まれていることを確認しました。出力には、空または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;
    }

以下は、問題を示す画像(赤い領域)です。

ここに画像の説明を入力してください

4

3 に答える 3

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;
}
于 2012-12-17T00:31:48.037 に答える
0

で発生する不要な空のリスト項目についてListView、私はこれを試しました:

         List<String> listofItems;
         String strlist=listofItems.get(position);

         if(strlist.isEmpty())
        {
            remove(strlist);
        }

「位置」は、カスタム アダプターを実装していたため、View getView メソッドのパラメーターとして取得したものです。それは私にとってはうまくいきました!

于 2014-11-13T11:40:18.753 に答える
0

match_parentListView で TextView の幅を使用したために問題が発生したようです。に変更するとwrap_content直ったようです。

于 2012-12-17T20:11:09.167 に答える