【发布时间】:2019-09-10 15:03:05
【问题描述】:
我想创建自定义列表,通过对我设法按数据类型获取每个节标题的数据进行分组,为每一行增加不同的数据,但我也想为每个节添加页脚。我不知道如何执行它
我试图通过 getitemviewtype() 返回部分页脚,但它必须在每个项目类型中返回,所以不知道如何执行它
public override View GetView(int position, View convertView, ViewGroup parent)
{
programTabAllItemHolder programTabAllItemHolder;
View view = convertView;
if (view == null)
{
programTabAllItemHolder = new programTabAllItemHolder();
if (GetItemViewType(position) == 0)
{
view = LayoutInflater.From(context).Inflate(Resource.Layout.FTSProgramItemLayout, parent, false);
programTabAllItemHolder.searchprogramdate = view.FindViewById<TextView>(Resource.Id.searchdate);
programTabAllItemHolder.searchprogramtime = view.FindViewById<TextView>(Resource.Id.searchtime);
programTabAllItemHolder.searchProgramTitle = view.FindViewById<TextView>(Resource.Id.searchprogramtitle);
programTabAllItemHolder.linearsearchdatetime = view.FindViewById<RelativeLayout>(Resource.Id.linearsearchdatetime);
programTabAllItemHolder.programseparator = view.FindViewById<View>(Resource.Id.programline);
programTabAllItemHolder.searchprogramresults = view.FindViewById<TextView>(Resource.Id.searchprogramresults);
}
else if (GetItemViewType(position) == 1)
{
view = LayoutInflater.From(context).Inflate(Resource.Layout.FTSParticipantItemLayout, parent, false);
programTabAllItemHolder.initialsView = view.FindViewById<TextView>(Resource.Id.searchparticipantinitialsView);
programTabAllItemHolder.Listimageview = view.FindViewById<ImageView>(Resource.Id.searchparticipantlistimageView);
programTabAllItemHolder.searchParticipantTitle = view.FindViewById<TextView>(Resource.Id.searchparticipanttitle);
programTabAllItemHolder.searchparticipantresults = view.FindViewById<TextView>(Resource.Id.searchparticipantresults);
}
else if (GetItemViewType(position) == 2)
{
view = LayoutInflater.From(context).Inflate(Resource.Layout.FTSInformationItemLayout, parent, false);
programTabAllItemHolder.searchinformationlistimageView = view.FindViewById<ImageView>(Resource.Id.searchinformationlistimageView);
programTabAllItemHolder.searchinformationtitle = view.FindViewById<TextView>(Resource.Id.searchinformationtitle);
programTabAllItemHolder.searchinformationresults = view.FindViewById<TextView>(Resource.Id.searchinformationresults);
}
view = LayoutInflater.From(context).Inflate(Resource.Layout.SearchFooterView, parent, false);
programTabAllItemHolder.searchfooterview = view.FindViewById<LinearLayout>(Resource.Id.ftsfooterview);
view.Tag = programTabAllItemHolder;
}
else
{
programTabAllItemHolder = view.Tag as programTabAllItemHolder;
}
if (GetItemViewType(position) == 0)
{
// setColorsforprogram
SetViewStyleforProgram(programTabAllItemHolder);
programTabAllItemHolder.searchProgramTitle.Text = programVTs[position].Title;
programTabAllItemHolder.searchprogramdate.Text = programVTs[position].StartDate.ToString("dd MMM");
programTabAllItemHolder.searchprogramtime.Text = programVTs[position].StartDate.ToString("hh:mm tt");
}
// participant view
else if (GetItemViewType(position) == 1)
{
programTabAllItemHolder.searchParticipantTitle.Text = programVTs[position].FirstName + programVTs[position].LastName;
//If profile icon is missing then show initials of First Name and Last Name ahead
if (string.IsNullOrEmpty(programVTs[position].IconUrl))
{
programTabAllItemHolder.Listimageview.Visibility = ViewStates.Gone;
programTabAllItemHolder.initialsView.Visibility = ViewStates.Visible;
programTabAllItemHolder.initialsView.Text = Utils.getUserFirstandLastChar(programVTs[position].FirstName, programVTs[position].LastName);
programTabAllItemHolder.initialsView.SetTextColor(Color.ParseColor(Utils.topNavForegroundColor));
//Round background image of initials
GradientDrawable initialsShape = new GradientDrawable();
initialsShape.SetShape(ShapeType.Oval);
initialsShape.SetCornerRadius(100f);
initialsShape.SetColor(Color.ParseColor(Utils.topNavBackgroundColor));
initialsShape.SetStroke(1, Color.ParseColor(Utils.topNavBackgroundColor));
//Invert the colors if theme is light
if (!Util.IsColorDark(Color.ParseColor(Utils.topNavBackgroundColor)))
{
initialsShape.SetColor(Color.ParseColor(Utils.topNavForegroundColor));
initialsShape.SetStroke(1, Color.ParseColor(Utils.topNavForegroundColor));
programTabAllItemHolder.initialsView.SetTextColor(Color.ParseColor(Utils.topNavBackgroundColor));
}
programTabAllItemHolder.initialsView.SetBackgroundDrawable(initialsShape);
}
else
{
programTabAllItemHolder.initialsView.Visibility = ViewStates.Gone;
MyApp.picassoWithCache.Load(programVTs[position].IconUrl).Into(programTabAllItemHolder.Listimageview);
}
//int check = position + 1;
//if ( check%3 == 0)
//{
// programTabAllItemHolder.seachparticipantsshowmore.Visibility = ViewStates.Visible;
//}
}
else if (GetItemViewType(position) == 2)
{
programTabAllItemHolder.searchinformationtitle.Text = programVTs[position].Title;
if (string.IsNullOrEmpty(programVTs[position].IconUrl))
{
programTabAllItemHolder.searchinformationlistimageView.SetImageResource(Resource.Drawable.linked_info_default_icon);
}
else
{
MyApp.picassoWithCache.Load(programVTs[position].IconUrl).Into(programTabAllItemHolder.searchinformationlistimageView);
}
}
return view;
}
【问题讨论】:
标签: android android-listview android-adapter