亦余心之所善兮,虽九死其犹未悔。这篇文章主要讲述如何在Android中处理ListView单击相关的知识,希望能为你提供帮助。
如何在ListView上收听点击事件?
这就是我现在拥有的
ListView list = (ListView)findViewById(R.id.ListView01);
...
list.setAdapter(adapter);
当我做以下
list.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView parentView, View childView,
int position, long id)
{
setDetail(position);
}public void onNothingSelected(AdapterView parentView) {}
});
这似乎没有点击任何事情。 所有这些代码都存在于扩展Activity的类中。
答案在列表视图中,使用
setOnItemClickListener
另一答案假设ListView对象是lv,请执行以下操作 -
lv.setClickable(true);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Override
public void onItemClick(AdapterView<
?>
arg0, View arg1, int position, long arg3) {Object o = lv.getItemAtPosition(position);
/* write you handling code like...
String st = "sdcard/";
File f = new File(st+o.toString());
// do whatever u want to do with 'f' File object
*/
}
});
另一答案您需要在适配器类getView()方法中设置膨胀视图“可单击”和“能够侦听单击事件”。
convertView = mInflater.inflate(R.layout.list_item_text, null);
convertView.setClickable(true);
convertView.setOnClickListener(myClickListener);
并在ListActivity中声明单击侦听器,如下所示,
public OnClickListener myClickListener = new OnClickListener() {
public void onClick(View v) {
//code to be written to handle the click event
}
};
仅当您通过扩展BaseAdapter自定义适配器时才适用。
有关详细信息,请参阅android_SDK / samples / ApiDemos / src / com / example / android / apis / view / List14.java
另一答案我之前的两个答案是正确的 - 你可以使用
OnItemClickListener
。值得注意的是,
OnItemClickListener
和OnItemSelectedListener
之间的区别虽然听起来很微妙,但事实上很重要,因为项目选择和焦点与你的AdapterView
的触摸模式有关。默认情况下,在触摸模式下,没有选择和焦点。您可以查看here以获取有关该主题的更多信息。
另一答案这个解决方案非常简约,不会弄乱您的代码。
在你的list_item.xml(不是listView!)中分配属性android:onClick,如下所示:
<
RelativeLayout android:onClick="onClickDoSomething">
然后在你的活动中调用这个方法:
public void onClickDoSomething(View view) {
// the view is the line you have clicked on
}
另一答案有人说,你必须使用
setOnItemClickListener
。
代码应该是这样的:listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<
?>
parent, View view, int position, long id) {
// When clicked, show a toast with the TextView text or do whatever you need.
Toast.makeText(getApplicationContext(), ((TextView) view).getText(), Toast.LENGTH_SHORT).show();
}
});
另一答案首先,该类必须实现click侦听器:
implements OnItemClickListener
然后将侦听器设置为ListView
yourList.setOnItemclickListener(this);
最后,创建clic方法:
@Override
public void onItemClick(AdapterView<
?>
parent, View view, int position,
long id) {
Toast.makeText(MainActivity.this, "You Clicked at " +countries[+ position], Toast.LENGTH_SHORT).show();
}
你可以看看并下载代码here
另一答案在您的活动中使用setOnItemClickListener()api。以下是样本。
listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){@Override
public void onItemClick(AdapterView<
>
parent, View view, int position, long id)
{
// your code here.
}});
另一答案【如何在Android中处理ListView单击】在Kotlin中,像list一样简单地为listView添加一个监听器
your_listview.setOnItemClickListener { parent, view, position, id ->
Toast.makeText(this, position, Toast.LENGTH_SHORT).show() }
推荐阅读
- Android(通过静态变量传递值会导致安全问题吗())
- Android GridVIew根据方向更改列数
- 如何在Android CardView中放大和缩小布局
- Intellij Idea 2018.2.5 CE Android开发问题,android sdk v28是不稳定/渲染问题
- 如何在Android上一次性获取所有按钮ID
- Android - 任何Activity的根视图层次结构中存在的所有视图的相对路径生成器
- 在Android Studio中将Gradle从3.3升级到4.1后出错
- PC和Android设备之间的客户端 - 服务器连接问题
- Android Alpha内部版本无法登录。我在哪里可以查看日志文件()