问题是,当我向上滚动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;
}