こんにちはスタックオーバーフローAndroidユーザー、
次の質問にご協力ください。
問題
魚の種類を一覧表示するアプリの機能を書いています。アダプターにカスタムListViewアダプタークラス(これをFishSpeciesListAdapterと呼びましょう)を使用しています。現在のところ、プログラムのデフォルトとして27種の魚が記録されています(最終的には自分で追加できるようになります)。問題は、アダプターを実際のlistview xmlオブジェクトにリンクすると、同じ5〜6種を常に反復しているように見えることです。
記録された種をテストしたので、問題はカスタムアダプター内にあるはずです。すべての種は、アダプターに渡すリスト内で異なります。
アダプターを設定したコードは次のとおりです。
this.n_fishSpeciesListView = FindViewById<ListView> (Resource.Id.xml_fishSpeciesListView);
this.n_fishSpeciesListView.Adapter = new FishSpeciesListAdapter (this,
this.n_model.SpecieManager.Species);
カスタムListViewアダプタコードは次のとおりです。
public class FishSpeciesListAdapter : BaseAdapter
{
Context n_context;
List<AppCode.Specie> n_specieData;
public FishSpeciesListAdapter (Context context, List<AppCode.Specie> specieData)
{
this.n_context = context;
this.n_specieData = specieData;
}
public override int Count {
get { return this.n_specieData.Count; }
}
public override Java.Lang.Object GetItem (int position)
{
return null;
}
public override long GetItemId (int position)
{
return 0;
}
// create a new ImageView for each item referenced by the Adapter
public override View GetView (int position, View convertView, ViewGroup parent)
{
View v;
if(convertView==null){
LayoutInflater li = LayoutInflater.FromContext(parent.Context);
v = li.Inflate(Resource.Layout.Adapter_FishSpeciesIcon, null);
ImageView iconImage = (ImageView)v.FindViewById(Resource.Id.xml_adapter_fishSpeciesIconImage);
TextView nameText = (TextView)v.FindViewById(Resource.Id.xml_adapter_fishSpeciesNameText);
TextView scientificNameText = (TextView)v.FindViewById(Resource.Id.xml_adapter_fishSpeciesScientificNameText);
nameText.Text = this.n_specieData[position].Name;
scientificNameText.Text = this.n_specieData[position].ScientificName;
if (this.n_specieData[position].RelatedMedia.AttachedPhotos.Count < 1)
{
iconImage.SetImageResource(Resource.Drawable.Icon);
}
else
{
iconImage.SetImageBitmap(BitmapFactory.DecodeByteArray(this.n_specieData[position].RelatedMedia.AttachedPhotos[0], 0, this.n_specieData[position].RelatedMedia.AttachedPhotos[0].Length));
}
}
else
{
v = convertView;
}
return v;
}
}
したがって、上記のコードを実行すると、次のスクリーンショットが表示されます。
ご覧のとおり、渡されたList変数に少なくとも27の異なる種が記録されていると私が確信している重複があります。これがなぜであるか、そしてこれをどのように修正できるかについての助けは非常に役に立ちます。
私の研究
アダプタのGetViewメソッドで「ViewcurrentView」変数を再利用している可能性があることを読みました。私はこのリンクでその情報を見つけました。私の場合、これを修正する方法がわかりません。コード例は、良いまたは詳細な指示になります。お時間をいただきありがとうございます。