0

URL から項目のリストを取得し、カスタマイズした ArrayAdapter を使用して ListView に表示しています。最大で 25 件の結果を表示しますが、25 件を超える場合は「次へ」のリンクを表示したいので、URL から最大 26 件を取得します。ビューの最後の項目だけを表示する方法を見つけようとしています。画像の代わりに次のリンクと、他のアイテムが表示する 2 つの TextViews。下にスクロールすると、すべてのアイテムが想定どおりに表示されますが、最後のアイテムは残りのように見え続けます. 上にスクロールすると、5 つおきの項目が空白になります (区切り線があるため、まだそこにあることがわかります)。

内部 getView:

if (position + 1 == limit) { // Limit = 26, corresponding position is 25
    Log.e("Last Item", String.valueOf(position));
    // Gone
    image.setVisibility(8);
    text.setVisibility(8);

    // Visible
    next.setVisibility(0);
} else {
    if (item != null) {

        Log.e("Other item", String.valueOf(position));
        if (top_text != null) {
            top_text.setText(item.getItemTitle(), BufferType.SPANNABLE);
        }
        if(bottom_text != null){
            bottom_text.setText(item.getItemDescription());
        }
    }
}
return view;

ddms では、最後のアイテムに対してのみ「最後のアイテム」タグを出力し、残りのアイテムに対して「その他のアイテム」タグを出力していますが、アイテムは if-else に基づいて変更されていません。XML では、next は gone に設定されているため、else で変更する必要はありません。if-else を削除して、else 内のコードのみを残すと、リストは適切に機能しますが、次のリンクが必要です。奇妙な動作の原因についてのアイデアはありますか? 追加のコードを表示する必要がある場合、または何が起こっているかを明確にする必要がある場合はお知らせください。

4

1 に答える 1

1

getView の完全なコードを投稿してください。ビューを返します。しかし、ビューとは何ですか、それはconvertViewですか、それともxmlから膨張していますか?

最後のアイテムの別のビューを取得する方法は次のとおりです。1. 2 つのレイアウトを作成します。最初は通常のアイテム、最後のアイテムは sencond です 2. in getView(int position, View convertView, ViewGroup parent)

View view = convertView;
if (view == null) {
LayoutInflater vi = (LayoutInflater) mContext
                        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = vi.inflate(R.layout.xxx, null);
} else {
    //check if view is not layout we need (based on position), we need inflate from xml
}

//set text ...
于 2011-02-07T19:44:43.867 に答える