Android:Activity 中的 onListItemClick
上次我在这里问了一个问题,我学到了很多东西,所以我想值得再试一次。
我正在使用来自此链接的 Fedor 的惰性列表: ListView 中的图像延迟加载
它的作用就像一个魅力。但是,Fedor 正在让他的主类扩展 Activity
而不是 ListActivity
。因此,我无法再使用 listItemClick 侦听器。 Eclipse 在 onListItemClick()
周围声明了一些错误。当我变成“但意图启动器不起作用”时它可以
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
// Intent launcher here
}
工作
protected void onListItemClick(ListView l, View v, int position, long id) {
// Intent launcher here
}
。 Toast 通知也没有。
当我在 ListActivity
中转动 Activity
时,Eclipse 不会错开,但我的模拟器会强制关闭。
如何
- 在活动中单击
onListItemClick()
(首选) - 或者将代码转换为
ListActivity
而无需强制关闭?
预先非常感谢。
Previous time I asked a question here I learned a lot so I guess it's worth a shot to try it again.
I am using the lazy list by Fedor from this link:
Lazy load of images in ListView
It's working like a charm. BUT, Fedor is making his main class extend Activity
instead of ListActivity
. Because of this, I am no longer able to use a listItemClick listener. Eclipse declares some errors around onListItemClick()
. It works when I turn
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
// Intent launcher here
}
into
protected void onListItemClick(ListView l, View v, int position, long id) {
// Intent launcher here
}
But the intent launcher doesn't work. Neither does a toast notification.
When I turn the Activity
in a ListActivity
, Eclipse doesn't stagger, but my emulator gives me a force close.
How do I get
- Either
onListItemClick()
click in the activity (preferable) - Or do I transform the code into a
ListActivity
without force close?
Thanks a lot in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
listItemClickListener 附加到
ListView
。当您将ListActivity
更改为Activity
时,您的类不再具有与其关联的视图,因此Activity
类不知道如何处理一个 onListItemClickListener。您只需将侦听器附加到您的
ListView
即可:A listItemClickListener is attached to a
ListView
. When you changedListActivity
toActivity
, your class no longer has a view associated with it and thus anActivity
class has no idea what to do with an onListItemClickListener.You just have to attached a listener to your
ListView
:我的答案写为:
这是代码:
参考:根据 android.widget.AdapterView .OnItemClickListener ,公共方法 onItemClick() 是单击某个项目时调用的方法{而不是未知的受保护方法 onListItemClick() }
I am writing my answer as:
Here is the code:
Reference: According to android.widget.AdapterView.OnItemClickListener , public method onItemClick() is the method invoked when an item is clicked {instead of unknown protected method onListItemClick() }
我一整天都在研究这个问题,在制作了自己的 ArrayAdapter 之后,我不知道如何更改列表中的类。
以下是我如何找到如何做到这一点的方法。在我调用我的数组之后,我只是通过执行该方法完成了我的代码。
然后,在我将所有文本放在
之间之后,我设法使用自定义字体和背景完全自定义我的
ListView
。我确信你们很多人并不真正关心。但我很兴奋,并希望通过发布这篇文章可以帮助将来的某人。I have been working on this all day and after making my own
ArrayAdapter
I couldn't figure out how to change classes in my list.Here's how I found out how to do it. After I called my array i simply finished out my code in that method by doing.
Then after all my text i put
Between I managed to completely customize my
ListView
with custom font and backgrounds. I'm sure a ton of you don't really care. But I'm exited and was hoping by posting this that I might help someone in the future.对于非
ListActivity
来说,要为ListView
提供项目点击侦听器,您必须调用setOnItemClickedListener()
/code> (如果来自 XML,您可能需要使用findViewById()
来获取它),而不仅仅是覆盖
ListActivity
的onListItemClickListener()
>,在这里你可以调用Activity
实现AdapterView.onItemClickedListener()
并将其作为参数传递给setOnItemClickedListener()
。(如果您阅读
ListActivity
的源代码(我推荐),您会发现它只是通过创建一个内部侦听器对象来调用您重写的onListItemClick() 在幕后执行此操作。 )。
For a non-
ListActivity
to have an item-clicked-listener for aListView
, you have to call thesetOnItemClickedListener()
on theListView
(you may need to get that usingfindViewById()
if it's coming from XML)Rather than just overriding
ListActivity
'sonListItemClickListener()
, here you'd have your invokingActivity
implementAdapterView.onItemClickedListener()
and pass it as the parameter tosetOnItemClickedListener()
.(If you read the source code for
ListActivity
(which I recommend), you'll see it just does exactly that behind the scenes by creating an internal listener object that calls your overriddenonListItemClick()
).如果您使用的是
ListActivity
,那么您需要执行以下操作:这不是设置
OnItemClickListener
的唯一方法。看看其他答案。这是我喜欢的方式,因为它更清晰、更容易阅读。If you are using
ListActivity
then you want to do something like this:This is not the only way to set an
OnItemClickListener
. Look other answers. This is the way I like to do it since it's clearer and easier to read.FE.java
FE.java
假设您的数据源 Fruit 包含很少的字符串。您可以按如下方式定义
onCreate()
:然后按如下方式编写
onListItemClick()
:我希望它对您有用:)
Assume you have datasource Fruit contain few strings. You can define the
onCreate()
as following:And then write the
onListItemClick()
as following:I hope it works for you :)
我只是在
onCreate()
中添加了以下内容:在
onCreate()
之外添加了setPaymentDetails()
:I have simply added following in
onCreate()
:Outside of
onCreate()
addedsetPaymentDetails()
: