2016-03-11 79 views
0

我試圖學習Xamarin和作爲一個非常基本的第一個應用程序,我試圖與列表適配器一起玩。列表顯示得很好,但我想用滑動等方式來處理其中的項目。我嘗試了下面的代碼,但似乎沒有調用OnTouchEvent(可能是因爲它沒有附加到列表的視圖,而是當它在MainActivity中使用時,它工作得很好)。我設法使用OnListItemClick,但這對我來說還不夠。我怎樣才能使OnTouchEvent工作,或者我有什麼其他可能性來聆聽觸摸事件?Xamarin ListActivity 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

我已經兩年Xamarin甚至從來沒有聽說過'ListActivity'笑:d我壞。 – arsena

+0

發佈您的XML,請 – arsena

+0

我沒有爲此活動提供一個xml(我認爲...)。如果你不知道它甚至存在,那麼我可以使用的其他成語做什麼等價物? – user2717954

回答

1

對於你的理由,你可以使用列表視圖開始。

ListView由以下幾部分組成:

行 - 在列表中的數據的可視表示。

適配器 - 將數據源綁定到列表 視圖的非可視類。

快速滾動 - 讓用戶滾動列表的長度的句柄。

Section Index - 一個浮動在滾動行上的用戶界面元素,用於指示列表中當前行的位置爲 。

創建簡單的列表請執行以下操作:

listviewlistview 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

+0

事實證明ListAcitivity只是有一個ListView字段可以使用,並且不需要重寫所有這些東西 – user2717954