Я написал приложение с нижней навигацией и пятью вкладками. Работает без проблем. На моей второй вкладке у меня есть ListView, и когда пользователь щелкает по нему, он должен открыть другой фрагмент / макет.
1. чтобы создать представления вкладок, я создал фрагмент MenuBase:
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
string title = (string) Arguments.Get("title");
View view = null;
switch (title)
{
case "T1":
break;
case "Tutorial":
FragActivity.Tutorial tutorial = new FragActivity.Tutorial();
view = tutorial.createTutorialAction(inflater, container, savedInstanceState);
break;
case "T3":
break;
case "T4":
break;
case "T5":
break;
}
return view;
}
2. Вот моя функция CreateTutorial:
public View createTutorialAction(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
List<TutorialItem> tutorialItems = new List<TutorialItem>();
View view = inflater.Inflate(Resource.Layout.Tutorial, container, false);
ListView listView = view.FindViewById<ListView>(Resource.Id.tutorialListView);
int resID = (int)typeof(Resource.Drawable).GetField("eventPic").GetValue(null);
for (int i = 0; i < 10; i++)
{
tutorialItems.Add(new TutorialItem()
{
ImgName = resID,
Text = "Tutorial Nr " + i,
});
}
listView.Adapter = new TutorialAdapter(this, tutorialItems, container, inflater);
return view;
}
3. Чтобы создать ListView:
public class TutorialAdapter : BaseAdapter<TutorialItem>
{
List<TutorialItem> items;
Activity context;
ViewGroup container;
LayoutInflater inflater;
View view;
public TutorialAdapter(Activity context, List<TutorialItem> items, ViewGroup container, LayoutInflater inflater) : base()
{
this.context = context;
this.items = items;
this.container = container;
this.inflater = inflater;
}
public override long GetItemId(int position)
{
return position;
}
public override TutorialItem this[int position]
{
get { return items[position]; }
}
public override int Count
{
get { return items.Count; }
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
var item = items[position];
view = convertView;
if (view == null) // no view to re-use, create new
view = this.inflater.Inflate(Resource.Layout.Tutorial_Profile, this.container, false);
view.FindViewById<ImageView>(Resource.Id.imgTutorialDescribe).SetImageResource(item.ImgName);
view.FindViewById<TextView>(Resource.Id.txtTutorialDescribe).Text = item.Text;
LinearLayout profile = view.FindViewById<LinearLayout>(Resource.Id.tutorialProfileLayout);
profile.Tag = item.Text;
profile.Click += OnTutorialProfileClicked;
return view;
}
}
Все работает до сих пор ... Но я не знаю, что мне следует сделать, чтобы перейти к новому макету / фрагменту с Bottomnavigation или, если это нормально, загрузитьэто из BaseAdapter:
public void OnTutorialProfileClicked(object sender, EventArgs e)
{
//Load another Fragment
}
Если чего-то не хватает ... Скажите, я могу отредактировать свой пост.