【问题标题】:getSelectedItemPosition() of ListView returns -1ListView 的 getSelectedItemPosition() 返回 -1
【发布时间】:2015-06-07 06:34:51
【问题描述】:

使用此代码,在 setSelection 指令后执行 System.out.println 时,返回 -1,我不知道为什么。

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.composition);

        lv = (ListView) findViewById(android.R.id.list);
        cabecera = (TextView) findViewById(R.id.cabecera);
        information = (TextView) findViewById(R.id.paciente);

        proceso = new ArrayList<>();
        proceso.add("- Item1");
        proceso.add("- Item2");

        adapter = new ArrayAdapter<String>(getApplicationContext(),R.layout.customizedlistitem,proceso);
        lv.setAdapter(adapter);

        lv.post(new Runnable() {
            @Override
            public void run() {
                lv.setSelected(true);
                lv.setSelection(0);
                adapter.notifyDataSetChanged();
                System.out.println("Selected Item onCreate: "+lv.getSelectedItemPosition());
                System.out.println("Get Count en onCreate: "+lv.getCount());
            }
        });

        nextBundle = new Bundle();
        nextBundle.putString("name",proceso.get(position));

        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                in = new Intent(getApplicationContext(),Check.class);
                in.putExtras(nextBundle);
                startActivity(in);
            }
        });
    }

应用于ListView的getCount()函数返回正确的值:2

我已经寻找解决方案,但我阅读和测试的所有内容都没有解决问题。

更新:

这段代码:

listPacientes = new ArrayList<>();
listPacientes.add("Elemento 1");
listPacientes.add("Elemento 2");
listPacientes.add("Elemento 3");

adapter = new ArrayAdapter<String>(getApplicationContext(),R.layout.customizedlistitem,list);
lv.setAdapter(adapter);

lv.setSelection(1);
System.out.println(lv.getSelectedItemPosition());

适用于主要活动。 “System.out”返回 1,但下一个活动中的相同代码返回 -1,为什么?看不懂。

【问题讨论】:

  • 我认为 lv.getSelectedItemPosition() 将在 listview.onitemselectedlistener 中工作...

标签: android listview selecteditem


【解决方案1】:

onItemClick() 方法中使用lv.getSelectedItemPosition() 方法。你会在这里得到正确的值

【讨论】:

  • 谢谢,我会测试一下。但是,我不知道为什么,在具有几乎相同代码的其他 Activity 中,该函数返回正确的值.. :(
【解决方案2】:

您首先选择单元格,然后通过调用adapter.notifyDataSetChanged(); 刷新 ListView - 这样您的选择就会被删除。

【讨论】:

  • 我已经删除了该指令,但程序仍然存在同样的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-09
相关资源
最近更新 更多