2011-02-07 9 views
0

URLからアイテムのリストを取得し、カスタマイズされたArrayAdapterを使用してListViewに表示しています。私は最大25の結果を表示しますが、25より大きい場合は「次へ」リンクを表示したいので、URLから最大26を取得します。ビュー内の最後の項目を表示する方法を見つけようとしています画像の代わりに次のリンク、および他の項目が表示する2つのTextView。下にスクロールすると、すべてのアイテムが想定どおりに表示されますが、最後のアイテムは引き続き残りのアイテムと同じように見えます。バックアップをスクロールすると、5番目ごとの項目が空白になります(分離線のためにまだそこにあることがわかります)。ArrayAdapterの最後の項目の別のビューを作成するにはどうすればいいですか?

インサイドgetViewメソッド:

DDMSで
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; 

、それが唯一の最後の項目は、「最後のアイテム」タグを印刷され、残りのための「その他の項目」のタグが、アイテムがされていませんif-elseに基づいて変更されました。 XMLでは、nextはなくなるように設定されているため、elseでは変更する必要はありません。 if-elseを削除してelse内のコードだけを残すと、リストは正常に機能しますが、次のリンクが必要です。奇妙な行動の原因についての任意のアイデア?追加のコードを見る必要があるか、何が起こっているのかを明確にする必要があるかどうかを教えてください。

答えて

1

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

は私が最後の項目ごとに異なるビューを取得する方法方法です: 1. 2レイアウト、通常のアイテムのための最初の、getViewメソッド(int型の位置、表示convertView、のViewGroupの親)

内の最後のアイテム 2のsencondを作成します
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 ... 
+0

viewはconvertViewです。私は決して別のレイアウトを使用することは考えていませんでしたが、それはトリックでした。ありがとう! – Cameron

関連する問題