这里我无法触发ListView项单击事件。这是我使用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项目点击事件——我添加了两个按钮和一些文本。我需要在这里设置任何财产来解雇这样的事件我是xamarin的新手。
我只需一行代码就可以解决我的问题
在单元格中的按钮上设置"Focusable = false
"。