如何处理Android中的ListView点击
-
20-09-2019 - |
题
我如何听点击一个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) {
}
});
这似乎并没有做任何点击。点击 而所有这些代码住扩展活动类中。
解决方案
在您的列表视图中,使用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 /样品/ ApiDemos / SRC / COM /示例/机器人的/ apis /视图/ List14.java更多细节
在我前面的两个答案是正确的 - 你可以使用OnItemClickListener
这是很好的注意,OnItemClickListener
和OnItemSelectedListener
之间的区别,虽然听上去含蓄,其实显著,为项目选择和重点与您AdapterView
的触摸模式有关。
默认情况下,在触摸模式中,不存在选择和聚焦。 你可以看看这里关于这个问题的进一步信息。
此解决方案是真正的简约,不会弄乱你的代码。
在您的 list_item.xml 指定属性的安卓(NOT ListView的!):的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();
}
});
首先,类必须实现点击listenener:
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();
}
你可以看看,下载代码这里
使用setOnItemClickListener()API在您的活动。以下是示例。
listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<> parent, View view, int position, long id)
{
// your code here.
}
});
在科特林,收听者添加到你的ListView那样简单的java
your_listview.setOnItemClickListener { parent, view, position, id ->
Toast.makeText(this, position, Toast.LENGTH_SHORT).show()
}