如何在Xamarin Android中设置ScrollListeners

时间:2016-03-24 15:38:41

标签: android xamarin swiperefreshlayout

问题是,当我向上滚动ListView时,SwipeRefresh开始刷新,ListView不会向上滚动。我希望只有当ListView显示最顶层的项目时才会发生刷新。

这是我的axml:

    <?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/swipeLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

  <LinearLayout
            android:id="@+id/llcontainer"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <TextView
                android:text="Pull Down to Refresh"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="12dp"
                android:alpha="0.5"
                android:gravity="center" />
          <ListView
          android:minWidth="25px"
          android:minHeight="25px"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:id="@+id/myListView" />

        </LinearLayout>

</android.support.v4.widget.SwipeRefreshLayout>

我知道我必须在这里实现一些滚动侦听器,但我不知道如何在xamarin中执行它。请帮忙。 这是我的自定义ListView适配器:

    class MyListViewAdapter : BaseAdapter<Person>
    {

        private List<Person> listItems;
        Context myContext;

        public MyListViewAdapter(Context context, List<Person> items)
        {
            listItems = items;
            myContext = context;
        }


        public override Person this[int position]
        {
            get
            {
                return listItems[position];
            }
        }

        public override int Count
        {
            get
            {
                return listItems.Count;
            }
        }

        public override long GetItemId(int position)
        {
            return position;
        }

        public override View GetView(int position, View convertView, ViewGroup parent)
        {
            View row = convertView;
            if (row == null)
            {
                row = LayoutInflater.From(myContext).Inflate(Resource.Layout.PersonListViewLayout, null, false);
            }


            TextView txtFirstName = row.FindViewById<TextView>(Resource.Id.txtFirstName);
            txtFirstName.Text = listItems[position].firstName;

            TextView txtLastName = row.FindViewById<TextView>(Resource.Id.txtLastName);
            txtLastName.Text = listItems[position].lastName;

            TextView txtAge = row.FindViewById<TextView>(Resource.Id.txtAge);
            txtAge.Text = (listItems[position].age).ToString();

            TextView txtGender = row.FindViewById<TextView>(Resource.Id.txtGender);
            txtGender.Text = listItems[position].gender;


            return row;
        }

    }

以下是我创建活动时会发生的事情

 protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        SetContentView(Resource.Layout.ListViewLayout);

        mSwipeRefreshLayout = FindViewById<SwipeRefreshLayout>(Resource.Id.swipeLayout);
        mSwipeRefreshLayout.SetColorSchemeResources(Android.Resource.Color.HoloBlueBright, Android.Resource.Color.HoloBlueDark, Android.Resource.Color.HoloGreenLight, Android.Resource.Color.HoloRedLight);
        mSwipeRefreshLayout.Refresh += mSwipeRefreshLayout_Refresh;


        mListView = FindViewById<ListView>(Resource.Id.myListView);
        listItems = new List<Person>();


        listItems.Add(new Person() { firstName = "item1", lastName = "item1", gender = "Male", age = 19 });
        listItems.Add(new Person() { firstName = "item2", lastName = "item1", gender = "Male", age = 19 });
        listItems.Add(new Person() { firstName = "item3", lastName = "item1", gender = "Male", age = 19 });
        listItems.Add(new Person() { firstName = "item4", lastName = "item1", gender = "Male", age = 19 });

        MyListViewAdapter adapter = new MyListViewAdapter(this, listItems);
        mListView.Adapter = adapter;

    }

0 个答案:

没有答案