2017-07-14 10 views
0

こんにちは、大量のコードダンプを申し訳ありませんが、私はこれを解決する方法を理解できません。Xamarin.Android - リストビュー内のリストビュー

このアプリケーションでは、私は健康状態と食事に影響を及ぼすライフスタイルで満ちたリストビューを作成しています。したがって、各条件のタイトルの下に条件リストビューと成分リストビューがあり、それに対応する記号はノーまたは中位を意味します。

正常に動作するために条件リストビューを取得しましたが、コンポーネントアダプタを呼び出すときにコンテキストパラメータにエラーが表示されます: 引数1: 'FoodTranslate.TranslateAdapter'から 'Android.Content.Context'に変換できません' これを修正できる2番目のコードが変更されているかどうかは疑問でした。 ありがとうございます。

namespace FoodTranslate 
{ 
    class TranslateAdapter : BaseAdapter<OptionItem> 
    { 
     private List<OptionItem> Options; 
     private Context mContext; 

    public TranslateAdapter(Context context, List<OptionItem> items) 
    { 
     Options = items; 
     mContext = context; 
    } 
    public override int Count 
    { 
     get { return Options.Count; } 
    } 

    public override long GetItemId(int position) 
    { 
     return position; 
    } 
    public override OptionItem this[int position] 
    { 
     get { return Options[position]; } 
    } 

    //customising starts here 
    public override View GetView(int position, View convertView, ViewGroup parent) 
    { 
     View row = convertView; 

     if (row == null) 
     { 
      row = LayoutInflater.From(mContext).Inflate(Resource.Layout.ConditionItem, null, false); 
     } 

     TextView OptionName = row.FindViewById<TextView>(Resource.Id.OptionName); 
     ListView ingOut = row.FindViewById<ListView>(Resource.Id.Ingredients); 
     OptionName.Text = Options[position].Name; 

//where the error occurs 
     IngredientAdapter ingAdapter = new IngredientAdapter(this, Options[position].Ingredients); 


     return row; 
    } 
} 

}

原材料リストビュー:

namespace FoodTranslate 
{ 
    class IngredientAdapter : BaseAdapter<Ingredient> 
    { 
     private List<Ingredient> Ingredients; 
     private Context mContext; 

    public IngredientAdapter(Context context, List<Ingredient> items) 
    { 
     Ingredients = items; 
     mContext = context; 
    } 
    public override int Count 
    { 
     get { return Ingredients.Count; } 
    } 
    public override long GetItemId(int position) 
    { 
     return position; 
    } 
    public override Ingredient this[int position] 
    { 
     get { return Ingredients[position]; } 
    } 

    //Customising starts here 
    public override View GetView(int position, View convertView, ViewGroup parent) 
    { 
     View row = convertView; 
     if (row == null) 
     { 
      row = LayoutInflater.From(mContext).Inflate(Resource.Layout.IngredientItem, null, false); 
     } 

     TextView IngredientName = row.FindViewById<TextView>(Resource.Id.IngredientName); 
     ImageView imgLevel = row.FindViewById<ImageView>(Resource.Id.imgLevel); 

     IngredientName.Text = Ingredients[position].name; 

     switch (Ingredients[position].level) 
     { 
      case ("no"): 
       imgLevel.SetImageResource(Resource.Drawable.noldpi); 
       break; 
      case ("yes"): 
       imgLevel.SetImageResource(Resource.Drawable.yesldpi); 
       break; 
      case ("moderate"): 
       imgLevel.SetImageResource(Resource.Drawable.moderateldpi); 
       break; 
     }; 

     return row; 

    } 
} 

}

答えて

1

代わりthismContextを渡してみてください - はい

IngredientAdapter ingAdapter = new IngredientAdapter(m, Options[position].Ingredients); 
+0

、ともADAを設定することを忘れないでくださいぬいぐるみ – Alexandre

関連する問題