2015-09-14 5 views
0

Моя проблема заключается в том, что я не могу сделать кнопку, которую я добавил в своем пользовательском listview, чтобы ее можно было щелкнуть.Clickable Button в пользовательском listview

Вот XML-файл моего пользовательского ListView:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="335dp" 
    android:layout_height="100dp" 
    android:minHeight="80dp" 
    android:maxHeight="250dp" 
    android:background="#ffffff" 
    android:id="@+id/list" 
    android:baselineAligned="false" 
    android:longClickable="false" 
    android:descendantFocusability="blocksDescendants" 
    android:clickable="false"> 
    <Button 
     android:background="@drawable/grbgCan" 
     android:layout_width="15dp" 
     android:layout_height="20dp" 
     android:id="@+id/deleteMemo" 
     android:layout_gravity="start" 
     android:layout_marginLeft="270dp" 
     android:layout_marginTop="5dp" 
     android:duplicateParentState="false" 
     android:clickable="true" /> 
    <TextView 
     android:text="Text" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/id" 
     android:layout_marginLeft="290dp" 
     android:layout_marginTop="-20dp" 
     android:layout_marginRight="15dp" 
     android:clickable="true" /> 
    <TextView 
     android:id="@+id/top" 
     android:text="Title" 
     android:textColor="#ff7e7777" 
     android:textAppearance="?android:attr/textAppearanceSmall" 
     android:layout_width="255.5dp" 
     android:layout_height="19.9dp" 
     android:paddingLeft="10dp" 
     android:layout_marginTop="-20dp" /> 
    <TextView 
     android:id="@+id/bottom" 
     android:textColor="#ff7e7777" 
     android:textAppearance="?android:attr/textAppearanceSmall" 
     android:layout_width="match_parent" 
     android:layout_height="63.3dp" 
     android:paddingLeft="50dp" 
     android:layout_gravity="left" 
     android:text="Note" /> 
    <TextView 
     android:text="Text" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/date" 
     android:layout_marginLeft="250dp" 
     android:layout_marginRight="5dp" /> 
</LinearLayout> 

В моей основной деятельности я попытался событие Btn.Click, но он производит только ошибку. И из того, что я читал в подобных проблемах, их кнопка была инициализирована в их адаптере Array, но я использую SimpleCursorAdapter, потому что я извлекаю данные из своей базы данных sqlite.

Что делать? Пожалуйста, не дайте мне java-коды, потому что некоторые из них не применимы в студии xamarin, так как это C#. Благодарю.

ответ

2

Вы не можете сделать это таким образом, потому что у вас есть много одинаковых элементов в ListView с одинаковыми идентификаторами
Вы должны установить OnClickListener к кнопке в GetView вашего адаптера() метод, как этот
(это ява код для андроид студии, поэтому она может отличаться от C# код, , но суть та же)

Button btn = (Button) convertView.findViewById(R.id.deleteMemo); 
btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //here you go 
     } 
    }); 
+0

Альтернативой может быть свойство 'onClick' для кнопки. Дайте ему значение имени метода. –

+0

Я уже пробовал это, и это вызывает ошибку –

0

Попробуйте что-то вроде этого (если у вас нет Обломки удалить вид. ниже)

var _view = view.FindViewById<ListView>(Resource.Id.listView1); 
if (_view.ChildCount > 0){ 
Button _button = (Button)_view.GetItemAtPosition(0).GetChildAt(0); 
} 

Потому что у вас есть много подобных объектов в списке, это единственный способ, я думаю, чтобы получить доступ к ним, Помните, что позиция позиция относительно текущих видимых элементов на экране и вы не можете пунктов доступа, которые не видно

+0

Хорошо, я попробую это. Спасибо –

+0

проверить эту тему, которая может быть вам полезна https://forums.xamarin.com/discussion/29748/creating-a-layout-for-a-fragment-that-views-can-be-added-and-removed -dynamically – CDrosos

+0

Я нашел другой способ (не используя кнопку). благодаря –

Смежные вопросы