2017-09-13 80 views
0

我正在開發一個Android應用程序在xamarin.android和我實現了列表視圖,它工作正常。但問題是,我有我的自定義列表中的按鈕,只有按鈕單擊事件執行當我按一下按鈕,但只按一下按鈕是否工作。但我要同時實現單擊事件listitemclick事件不執行,這是我的代碼只有一個點擊工作在列表視圖

internal class MyCustomListAdapter : BaseAdapter 
{ 
    private List<AlbumTable> albm; 

    public MyCustomListAdapter(List<AlbumTable> albm) 
    { 
     this.albm = albm; 
    } 

    public override int Count 
    { 

     get 
     { 
      return albm.Count(); 
     } 
    } 

    public override Java.Lang.Object GetItem(int position) 
    { 
     return null; 
    } 

    public override long GetItemId(int position) 
    { 
     return long.Parse(albm[position].Id); 
    } 

    public override View GetView(int position, View convertView, ViewGroup parent) 
    { 
     var view = convertView; 

     if (view == null) 
     { 
      view = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.inflate_album, parent, false); 

      var name = view.FindViewById<TextView>(Resource.Id.text1); 

      view.Tag = new ViewHolder() { Name = name }; 
     } 

     var holder = (ViewHolder)view.Tag; 

     holder.Name.Text = albm[position].Id; 

     holder.Name.Click += (e, a) => 
      { 
       DatabaseHelper db = new DatabaseHelper(); 
       db.DeleteFromTable(albm[position]); 
      }; 
     return view; 
    } 

} 

和我的列表視圖項的點擊看起來像這樣

myList.ItemClick += (object sender, AdapterView.ItemClickEventArgs e) => 
     { 
      string selectedFromList = e.Position.ToString(); 
      var activity2 = new Intent(this.Activity, typeof(AlbumViewer)); 
      activity2.PutExtra("position", e.Position.ToString()); 

      StartActivity(activity2); 
      System.Console.WriteLine(selectedFromList); 
     }; 

當我把按鈕按鈕單擊工作和列表查看項目點擊不起作用,如果我從設計中刪除了一個按鈕,然後列表項目點擊不起作用。

如何impplement兩個按鈕,點擊項目

回答

0

我遇到了一些問題,一個ListView內的有源元件(的TextView和ImageView的),我解決了改造的ListView中的LinearLayout ...不是很正統的解決方案,但在我的情況也很好,因爲我的名單很短。 修改很簡單,也許可以幫助你理解發生的事情。

這是「列表視圖」裏面的佈置:

<ScrollView 
    android:id="@+id/container_items" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <LinearLayout 
     android:id="@+id/list_items" 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 
</ScrollView> 

這裏就是我「設置」列表(在我的案件的活動):

LinearLayout listItems = FindViewById<LinearLayout>(Resource.Id.list_items); 

// ... 

private void RefreshList() 
{ 
    var adapter = new MyAdapter(this, Resource.Layout.item_layout, items); 
    Action refreshList =() => 
    { 
     listItems.RemoveAllViews(); 
     for (int i = 0; i < adapter.Count; i++) 
     { 
      listItems.AddView(adapter.GetView(i, null, listItems)); 
     } 
    }; 
    adapter.RegisterDataSetObserver(new DataSetObserver(refreshList)); 
    adapter.NotifyDataSetChanged(); 
} 

最後,這是適配器的GetView:

public override View GetView(int position, View convertView, ViewGroup parent) 
{ 
    View v = convertView; 
    if (v == null) 
    { 
     LayoutInflater vi = LayoutInflater.From(Context); 
     v = vi.Inflate(this.layoutId, parent, false); 
    } 
    MyItem myItem = GetItem(position); 

    ImageView btnRemove = v.FindViewById<ImageView>(Resource.Id.btn_item_remove); 

    // ... 

    btnRemove.Click += (sender, e) => 
    { 
     this.items.Remove(myItem); 
     this.Remove(myItem); 
     this.NotifyDataSetChanged(); 
    }; 

    return v; 
}