簡體   English   中英

xamarin中存在UI控件(如Button)時,無法觸發ListVIew Item單擊事件

[英]Not able to fire the ListVIew Item click event when there is UI Control like Button in xamarin

在這里,我無法觸發ListView Item單擊事件。 這是我帶有MainActivity.cs文件,Main.axml文件和MainActivityAdapter.cs文件的代碼。

MainActivity .cs

public class MainActivity : Activity
        {
            private ListView _contactsView;
            private List<Contact> _contacts;

        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);

//not able to fire event
            FindViewById<Button>(Resource.Id.add).Click += (s, e) =>
            {
                var intent = new Intent(this, typeof(EditPhoneDetailsActivity));
                base.StartActivity(intent);
            };

            _contactsView = FindViewById<ListView>(Resource.Id.homeListViewMain);
            if(_contactsView!=null){
                _contactsView.ItemClick += (s, e) =>
                    {
                        var intent = new Intent(this, typeof(EditPhoneDetailsActivity));
                        intent.PutExtra("SelectedContactId", _contacts[e.Position].Id.ToString());
                        base.StartActivity(intent);
                    };
            }

        }
        protected override void OnResume()
        {
            base.OnResume();
            _contacts = new ContactManager().GetContacts();
            _contactsView.Adapter = new MainActivityAdapter(this, _contacts);
        }
    }

Main.axml

    <!-- language: lang-xml -->

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:padding="8dp">
        <ListView
            android:minWidth="25px"
            android:minHeight="25px"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/homeListViewMain" />
        <RelativeLayout
            android:id="@+id/homeInnerRelativeLayout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true">
            <Button
                android:id="@+id/add"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:text="Add Personal Details" />
        </RelativeLayout>
    </RelativeLayout>

MainActivityAdapter.cs

    public class MainActivityAdapter : BaseAdapter<Contact>
    {
        Activity _context;
        private List<Contact> _contacts;

        public MainActivityAdapter(Activity context, List<Contact> contacts)
            :base()
        {
            this._context = context;
            this._contacts = contacts;
        }
        public override Contact this[int position]
        {
            get
            {
                return _contacts[position];
            }
        }

        public override int Count
        {
            get
            {
                return _contacts.Count;
            }
        }

        public override long GetItemId(int position)
        {
            return position;
        }

        public override View GetView(int position, View convertView, ViewGroup parent)
        {
            var item = _contacts[position];
            View view = convertView;
            if (view == null)
                view = _context.LayoutInflater.Inflate(Resource.Layout.TestListViewLoader, null);

            view.FindViewById<TextView>(Resource.Id.textout).Text =" Name :"+ item.ContactPersonName;
            view.FindViewById<Button>(Resource.Id.btnCall);
            return view;
        }
    }

TestListViewLoader.axml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="8dp">
    <LinearLayout
        android:id="@+id/Text"
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="10dip">
        <TextView
            android:id="@+id/textout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#0099CC"
            android:textSize="14dip"
            android:textStyle="italic" />
    </LinearLayout>
    <Button
        android:id="@+id/remove"
        android:layout_width="75dp"
        android:layout_height="40dp"
        android:textSize="10dip"
        android:textColor="#FF267F00"
        android:paddingLeft="22dip"
        android:layout_alignParentRight="true"
        android:text="Email" />
    <Button
        android:id="@+id/btnCall"
        android:layout_width="75dp"
        android:layout_height="40dp"
        android:textSize="10dip"
        android:textColor="#FF267F00"
        android:paddingLeft="22dip"
        android:layout_toLeftOf="@id/remove"
        android:text="Call" />
<!--<ListView
    android:id="@+id/viewCallDetailListView"
    android:layout_width="fill_parent"
    android:layout_height="210dip" />-->
</RelativeLayout>

這是簡單的代碼,但我不知道為什么會這樣,它不會觸發listView中的listview項目單擊事件。我是兩個按鈕和一些文本。 我需要在這里設置任何屬性來引發此類事件嗎?

我只需一行代碼即可解決我的問題

在單元格中的按鈕上設置“ Focusable = false ”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM