Listview Itemclick事件未触发android xamarin
Posted
技术标签:
【中文标题】Listview Itemclick事件未触发android xamarin【英文标题】:Listview Itemclick event not firing android xamarin 【发布时间】:2016-07-30 13:56:26 【问题描述】:public override Java.Lang.Object InstantiateItem (ViewGroup container, int position)
View view = LayoutInflater.From (container.Context).Inflate (Resource.Layout.pager_item, container, false);
container.AddView (view);
navlistArray = new List<jtaskItem>();
string apiUrl = MainActivity.GetData("http://"+MainActivity.IPAddress+"/api/jtasks/GetItemList?uName=admin&tgId=1");
JSONArray obj = new JSONArray(apiUrl);
//JSONObject obj = new JSONObject(apiUrl);
for (int i = 0; i < obj.Length(); i++)
JSONObject e = obj.GetJSONObject(i);
navlistArray.Add(new jtaskItem() ID = e.GetString("ID"), Title = e.GetString("Title"), DueDate = e.GetString("DueDate"));
//navlistArray.Add(e.GetString("Title"));
//loading listview
//TextView txtTitle = view.FindViewById<TextView> (Resource.Id.item_title);
listView = view.FindViewById <ListView> (Resource.Id.list);
MyListAdapter adapter = new MyListAdapter(container.Context, navlistArray);
//ArrayAdapter adapter = new ArrayAdapter<string>(container.Context, Resource.Layout.pager_item, Resource.Id.item_title, navlistArray);
listView.Adapter = adapter;
listView.ItemClick += listView_ItemClick;
return view;
void listView_ItemClick(object sender, AdapterView.ItemClickEventArgs e)
Console.Write(navlistArray[e.Position].ID);
这是我的代码,请帮忙,当我点击 lisview Itemclick 函数时没有调用请告诉我我在哪里做错了。
public class MyListAdapter:BaseAdapter<jtaskItem>
public List<jtaskItem> mItems;
public Context mContext;
public MyListAdapter(Context context, List<jtaskItem> items)
mItems = items;
mContext = context;
public override int Count
get return mItems.Count;
public override long GetItemId(int position)
return position;
public override jtaskItem this[int position]
get return mItems[position];
public override View GetView(int position, View convertView, ViewGroup parent)
View row=convertView;
if (row == null)
row=LayoutInflater.From(mContext).Inflate(Resource.Layout.List_Item, null,false);
TextView taskTitle=row.FindViewById<TextView>Resource.Id.TaskTitle);
taskTitle.Text = mItems[position].Title;
TextView dueOn = row.FindViewById<TextView>(Resource.Id.DueOn);
dueOn.Text = mItems[position].DueDate;
TextView id = row.FindViewById<TextView>(Resource.Id.ID);
id.Text = mItems[position].ID;
CheckBox mycheckBox=row.FindViewById<CheckBox>Resource.Id.checkBox);
mycheckBox.Checked = true;
return row;
【问题讨论】:
可能是您的布局文件中的某些内容从您的列表视图中“窃取”了焦点... 当我使用 arrayAdapter 但 MylistAdapter 不工作时触发 【参考方案1】:问题在于 android 不允许您选择具有可聚焦元素的列表项。
修改列表项上的复选框,使其具有如下属性:
android:focusable="false"
【讨论】:
【参考方案2】:您的适配器必须继承自 BaseAdapter<T>
或 ArrayAdapter<T>
。
public class MyListAdapter : BaseAdapter<jtaskItem> /* ... */
见:https://developer.xamarin.com/guides/android/user_interface/working_with_listviews_and_adapters/part_2_-_populating_a_listview_with_data/#Implementing_a_ListAdapter
【讨论】:
是的,我像这个公共类 MyListAdapter 一样使用过:仅限 BaseAdapterMyListAdapter
实现(将此添加到您的问题中)。
nope :) 它是 ***,如果其他人有同样的问题,他们想从你的错误中学习。如果它包含非公开的内容,请用最小的实现替换它。因此,只需编辑您的问题。也许我没有答案。因此,如果您将其发送给我,其他人都无法回答。
它是否包含一些奇怪的字符?
我添加了 MyListAdapter 类请告诉我我在哪里做错了。【参考方案3】:
在前面的评论中,添加图片寻求帮助。
android:focusable="false"
【讨论】:
以上是关于Listview Itemclick事件未触发android xamarin的主要内容,如果未能解决你的问题,请参考以下文章
在 ItemClick() 事件上获取 ListView 项目的详细信息
Android: ListView与Button的共存问题解决