android如何找出列表视图中单击的视图

时间:2014-08-20 20:46:35

标签: java android android-listview android-adapter

我非常熟悉android和java。我创建了一个我自己的适配器和listView,我想知道如何找到我的listView中按下了哪个视图或行,这样我就可以选择行的特定任务(任务包括将数据和信息发送到另一个活动)。

我认为也许位置变量包含点击的行的名称所以我尝试了但是当点击一行时应用程序崩溃

        hangarList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {

            Toast.makeText(getApplicationContext(), position,Toast.LENGTH_SHORT);

        }
    });

有人可以提供帮助

4 个答案:

答案 0 :(得分:0)

可能是该位置是一个整数,并且它期望一个字符串,并且还需要在您的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();

        }
    });

答案 1 :(得分:0)

首先,您在找到点击哪一行的正确轨道上。

您使用Toast.makeText()时出现错误。该方法有两个版本:

  1. makeText(Context context, int resId, int duration)
  2. makeText(Context context, CharSequence text, int duration)
  3. 现在在您的vode中,您执行Toast.makeText(..., position, ...)调用方法的第一个版本(因为position是一个整数),但由于position不是资源ID,因此应用程序崩溃。

    因此,您必须使用第二个版本并执行此操作,将CharSequence(或字符串)作为第二个参数传递:Toast.makeText(..., position+"", ...)

    顺便说一下。要获取行的实际值,您可以使用hangarList.getItemAtPosition(position)

答案 2 :(得分:0)

组成ListView中的行的视图被索引为数组。位置值是按下的行或视图的索引。您可以使用位置值来查找与单击视图关联的信息。

您的应用程序崩溃,因为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);
    }
}

答案 3 :(得分:0)

应用程序崩溃是因为你的Toast.You应该像Toast一样使用

Toast.makeText(context, text, duration).show();

你可以像这样简单地解决它:

String positionString=Integer.toString(position);
Toast.makeText(getApplicationContext(), positionString,Toast.LENGTH_SHORT).show();

没有Toast没有问题。正如你所说的点击了listview的哪一项? 用于控制单击哪个项目您可以使用方法的位置变量。 问候...... Omer