2016-03-11 4 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, please – arsena

+0

Я не hane xml (я думаю ...) для этой деятельности. И если вы не знали, что это даже существует, то какую другую идиому я могу использовать, что-то эквивалентно? – user2717954

ответ

1

По вашим причинам вы можете использовать ListView, чтобы начать с.

ListView состоит из следующих частей:

Ряды - Видимая представление данных в списке.

Адаптер - невизуальный класс, который связывает источник данных со списком вид.

Быстрая прокрутка - ручка, которая позволяет пользователю прокручивать длину списка .

Раздел Index - Элемент пользовательского интерфейса, который плавает над прокручиваемыми строками , чтобы указать, где в списке находятся текущие строки: .

Для создания простого списка выполните следующие действия:

создать XML для listview и listview items:

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