我正在尝试学习Xamarin,并且作为一个非常基本的第一个应用程序,我试图使用列表适配器。列表显示得很好,但我想用刷子等项目来做事情。我尝试下面的代码,但似乎没有调用OnTouchEvent(也许是因为它没有附加到视图中列表,但是对于"以下"它?当我尝试在MainActivity中使用它时效果很好)。我设法使用OnListItemClick,但对我来说还不够。如何使OnTouchEvent工作或我有什么其他可能性来听取触摸事件?
谢谢
public class SomeList: ListActivity
{
string[] someArr;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate (savedInstanceState);
someArr = getArr();
ListAdapter = new ArrayAdapter<String>(this, Android.Resource.Layout.SwipeListView, someArr);
}
public override bool OnTouchEvent(MotionEvent e) {
doSomething(e);
}
}
答案 0 :(得分:1)
出于您的原因,您可以使用listview开始。
ListView
由以下部分组成:
行 - 列表中数据的可见表示。
Adapter - 将数据源绑定到列表的非可视类 图。
快速滚动 - 一种允许用户滚动长度的句柄 列表。
Section Index - 一个漂浮在...上的用户界面元素 滚动行以指示列表中当前行的位置 位于。
要创建简单列表,请执行以下操作:
为您的listview
和listview items
创建xml:
ListView
:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minWidth="25px"
android:minHeight="25px">
<ListView
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="#000000"
android:id="@+id/listView1" />
</LinearLayout>
ListViewItem
:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
android:id="@+id/relativeLayout"
android:padding="10dp">
<TextView
android:text="Name"
android:textColor="@android:color/black"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/txtName" />
</RelativeLayout>
Listview
需要一个适配器来显示项目,所以我们应该创建一个:
public class ListAdapter : BaseAdapter<string>
{
List<string> _list;
Activity _context;
public ListAdapter(Activity context, List<string> list)
{
_context = context;
_list = list;
}
public override long GetItemId(int position)
{
return position;
}
public override Android.Views.View GetView(int position, Android.Views.View convertView, Android.Views.ViewGroup parent)
{
View view = convertView;
if (view == null)
{
view = _context.LayoutInflater.Inflate(Resource.Layout.ListItem, null);
}
TextView txtName = view.FindViewById<TextView>(Resource.Id.txtName);
var item = _list[position];
txtName.Text = item.UserName;
return view;
}
public override int Count
{
get
{
return _list.Count;
}
}
public override string this[int index]
{
get
{
return _list[index];
}
}
}
然后在Activity
中将适配器设置为listview
:
ListView _listView;
ListAdapter _adapter;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.List);
_listView = FindViewById<ListView>(Resource.Id.listView1);
_listView.ItemClick += ItemClick;
_adapter = new ListAdapter(this, myList);
_listView.Adapter = _adapter;
}
void ItemClick (object sender, AdapterView.ItemClickEventArgs e)
{
//Do stuff on item click.
}
多数民众赞成。 有关详细的教程检查Xamarin Documentation
更多链接: Swipe To Refresh
对于更复杂的功能和灵活性,请检查RecyclerView