Xamarin.android 如何在自定义listview中滚动到项目的底部

Xamarin.android 如何在自定义listview中滚动到项目的底部,xamarin.android,Xamarin.android,我有一个自定义listview,如下代码所示: listView.Adapter = new HomeScreenAdapter(this, tableItems); 如何使屏幕显示listview上的最后一个项目,而不是每次将项目添加到自定义listview时都显示列表的开头 HomeCreenadapter.cs namespacetest { public class HomeScreenAdapter : BaseAdapter<Model.TableItem> {

我有一个自定义listview,如下代码所示:

listView.Adapter = new HomeScreenAdapter(this, tableItems);
如何使屏幕显示listview上的最后一个项目,而不是每次将项目添加到自定义listview时都显示列表的开头

HomeCreenadapter.cs

namespacetest {
public class HomeScreenAdapter : BaseAdapter<Model.TableItem> {
    List<Model.TableItem> items;
    Activity context;
    public HomeScreenAdapter(Activity context, List<Model.TableItem> items)
        : base()
    {
        this.context = context;
        this.items = items;
    }
    public override long GetItemId(int position)
    {
        return position;
    }
    public override Model.TableItem 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 view = convertView;
        if (view == null) // no view to re-use, create new
            view = context.LayoutInflater.Inflate(Resource.Layout.content_main, null);
        view.FindViewById<TextView>(Resource.Id.Text1).Text = item.Heading;
            int expiryrangeint = Convert.ToInt32(item.ExpiryRange);
            if (expiryrangeint < 30)
                view.FindViewById<TextView>(Resource.Id.Text1).SetBackgroundColor(Android.Graphics.Color.Red);
            else if(expiryrangeint > 30 && expiryrangeint < 90)
                view.FindViewById<TextView>(Resource.Id.Text1).SetBackgroundColor(Android.Graphics.Color.DarkGray);
            else if (expiryrangeint > 90 && expiryrangeint < 180)
                view.FindViewById<TextView>(Resource.Id.Text1).SetBackgroundColor(Android.Graphics.Color.Yellow);
            else
                view.FindViewById<TextView>(Resource.Id.Text1).SetBackgroundColor(Android.Graphics.Color.White);
            //textview1.SetBackgroundColor(Android.Graphics.Color.Red);

            view.FindViewById<TextView>(Resource.Id.Text2).Text = item.SubHeading;
        view.FindViewById<TextView>(Resource.Id.Text3).Text=item.SubSubHeading;

        return view;
    }
}
}
namespacetest{
公共级家庭屏幕适配器:BaseAdapter{
清单项目;
活动语境;
公共家庭影院(活动背景、列表项目)
:base()
{
this.context=上下文;
这个项目=项目;
}
公共覆盖长GetItemId(int位置)
{
返回位置;
}
public override Model.TableItem此[int position]
{
获取{返回项目[位置];}
}
公共覆盖整数计数
{
获取{return items.Count;}
}
公共覆盖视图GetView(int位置、视图转换视图、视图组父视图)
{
var项目=项目[位置];
视图=转换视图;
如果(view==null)//没有要重用的视图,则创建新的
视图=context.LayoutInflater.Inflate(Resource.Layout.content\u main,null);
view.findviewbyd(Resource.Id.Text1).Text=item.Heading;
int expiryrangeint=Convert.ToInt32(item.ExpiryRange);
如果(expiryrangeint<30)
view.findviewbyd(Resource.Id.Text1).SetBackgroundColor(Android.Graphics.Color.Red);
否则,如果(expiryrangeint>30&&expiryrangeint<90)
view.findviewbyd(Resource.Id.Text1).SetBackgroundColor(Android.Graphics.Color.DarkGray);
否则如果(ExpireRangeint>90&&ExpireRangeint<180)
view.findviewbyd(Resource.Id.Text1).SetBackgroundColor(Android.Graphics.Color.Yellow);
其他的
view.findviewbyd(Resource.Id.Text1).SetBackgroundColor(Android.Graphics.Color.White);
//textview1.SetBackgroundColor(Android.Graphics.Color.Red);
view.FindViewById(Resource.Id.Text2).Text=item.SubHeading;
view.findviewbyd(Resource.Id.Text3).Text=item.subheading;
返回视图;
}
}
}

如果数据库发生更改,则需要重写在现有应用程序上完成的排序

此外,您需要更新应用程序

参考资料:

编辑

对于您在评论中提到的自动滚动案例:

 yourListView.setSelection(yourListAdapter.getCount() - 1);

参考:

我的意思是它将自动滚动到最后一个项目,而不是从第一个项目开始。每次添加新项目时,屏幕将在列表视图的顶部显示第一个项目,而不是直接到底部显示最后添加的项目。当列表越来越大时,我必须手动向下滚动到底部,查看是否添加了新项目。