Java android我如何找出在listview中单击了哪个视图
我对android和java相当陌生。我创建了一个我自己的适配器和listView,我想知道如何找出在我的listView中按下了哪个视图或行,以便我可以为选中的行执行特定任务(任务包括向其他活动发送数据和信息) 我认为position变量可能包含所单击行的名称,所以我尝试了它,但当单击一行时,应用程序崩溃Java android我如何找出在listview中单击了哪个视图,java,android,android-listview,android-adapter,Java,Android,Android Listview,Android Adapter,我对android和java相当陌生。我创建了一个我自己的适配器和listView,我想知道如何找出在我的listView中按下了哪个视图或行,以便我可以为选中的行执行特定任务(任务包括向其他活动发送数据和信息) 我认为position变量可能包含所单击行的名称,所以我尝试了它,但当单击一行时,应用程序崩溃 hangarList.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Over
hangarList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
Toast.makeText(getApplicationContext(), position,Toast.LENGTH_SHORT);
}
});
hangarList.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共虚线单击(AdapterView AdapterView,视图视图,内部位置,长l){
Toast.makeText(getApplicationContext(),位置,Toast.LENGTH\u SHORT);
}
});
有人能帮忙吗?可能是位置是一个整数,它需要一个字符串,并且需要在toast上调用show()来查看消息
hangarList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
Toast.makeText(getApplicationContext(), position+"",Toast.LENGTH_SHORT).show();
}
});
hangarList.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共虚线单击(AdapterView AdapterView,视图视图,内部位置,长l){
Toast.makeText(getApplicationContext(),position+“”,Toast.LENGTH_SHORT).show();
}
});
首先,关于查找单击了哪一行,您的思路是正确的
错误在于您使用了Toast.makeText()
。该方法有两种版本:
makeText(上下文、整数剩余、整数持续时间)
makeText(上下文、字符序列文本、整数持续时间)
Toast.makeText(…,position,…)
调用方法的第一个版本(因为position
是一个整数),但由于position
不是资源id,应用程序崩溃
因此,您必须使用第二个版本,为此,请传递一个CharSequence
(或字符串)作为第二个参数:Toast.makeText(…,position+“”,…)
顺便说一句,要获取行的实际值,您可以使用hangarList.getItemAtPosition(position)在
列表视图中组成行的视图像数组一样被索引。位置值是按下的行或视图的索引。可以使用“位置”值查找与单击的视图关联的信息
您的应用程序正在崩溃,因为Toast.makeText(Context,int,int)
的第二个参数需要一个字符串资源id整数。当您将位置指定为id时,它无法找到该字符串资源并引发异常。要显示已单击视图的索引,请尝试:
hangarList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
Toast.makeText(getApplicationContext(),
"View at position " + position + " clicked.",
Toast.LENGTH_SHORT);
}
}
hangarList.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共虚线单击(AdapterView AdapterView,视图视图,内部位置,长l){
Toast.makeText(getApplicationContext(),
“查看位置”+单击位置+”,
烤面包片(长/短);
}
}
应用程序因您的Toast而崩溃。您应该像使用Toast一样使用Toast
Toast.makeText(context, text, duration).show();
您可以用如下简单的方式修复它:
String positionString=Integer.toString(position);
Toast.makeText(getApplicationContext(), positionString,Toast.LENGTH_SHORT).show();
没有Toast也没有问题。正如您所说,单击了listview的哪一项?
要控制单击哪个项目,可以使用方法的位置变量。
关于..Omer请发布日志猫..显示错误消息。在您的listview上设置onitemclicklistener。