【问题标题】:How to get position of the clicked item in list view and store it in a variable如何在列表视图中获取单击项目的位置并将其存储在变量中
【发布时间】:2016-10-17 14:26:16
【问题描述】:

所以我用 5-6 个项目制作了这个列表视图。我已经设置了 onItemClickListener 方法。我想获得点击的listView的位置。例如,如果在第一名,我应该获得相应的位置并将其保存在变量中。如果我点击第二个,我应该得到相应的位置等等。我是初学者,请解释一下。

    final ListView listView = (ListView) findViewById(R.id.listView);
    ArrayList<String> abcd = new ArrayList<>();
    abcd.add("Number One");
    abcd.add("Number Two");
    abcd.add("Number Three");
    abcd.add("Number Four");
    abcd.add("Number Five");
    abcd.add("Number Six")
    ArrayAdapter<String> adapter = new ArrayAdapter<>(this,R.layout.list_view);
    listView.setAdapter(adapter);

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
        int position = listView.getItemIdAtPosition(position);
        Toast.makeText(MainActivity.this, "Clicked"+position , Toast.LENGTH_SHORT).show();
    }
});

【问题讨论】:

  • i 是被点击项的位置。只需阅读方法文档,您就会知道
  • int i 是位置,所以像这样敬酒Toast.makeText(MainActivity.this, "Clicked"+i ,Toast.LENGTH_SHORT).show();
  • onItemClick...{String item = abcd.get(position);
  • 我刚才试了一下,应用程序一直在崩溃 Idk 为什么。有什么想法吗?

标签: java android listview


【解决方案1】:

把你列为私有字段;

   private List<String> abcd = new ArrayList<>();

按照你的逻辑:

   final ListView listView = (ListView) findViewById(R.id.listView);

    abcd.add("Number One");
    abcd.add("Number Two");
    abcd.add("Number Three");
    abcd.add("Number Four");
    abcd.add("Number Five");
    abcd.add("Number Six")
    ArrayAdapter<String> adapter = new ArrayAdapter<>(this,R.layout.list_view);
    listView.setAdapter(adapter);

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
       String selectedElement = abcd.get(i);
    }
});

selectedElement 将是您可以存储的元素

【讨论】:

    【解决方案2】:

    我会试试这个:

    listview.setOnItemClickListener(new AdapterView.OnItemClickListener()
        {
            @Override
            public void onItemClick(AdapterView<?> arg0, View view, int position, long arg3)
            {
                String selectedFromList =(String) (listview.getItemAtPosition(position).toString());
                Log.d("Selected: ",  selectedFromList);
            }
        });
    

    【讨论】:

      【解决方案3】:

      试试这个:

      listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
          @Override
          public void onItemClick(AdapterView parent, View view, int pos, long id) {
              String item = abcd.get(pos);
              Toast.makeText(this, "Item: " + item + " At Position: " + pos, Toast.LENGTH_SHORT).show();
          }
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-30
        • 1970-01-01
        • 2019-05-21
        相关资源
        最近更新 更多