繁体   English   中英

如何在ListView onItemClickListener中获取所选项目的位置

[英]How to get the position of a selected item in ListView, onItemClickListener

我正在尝试获取所选项目的位置,如下所示:

//more code (adapter settings etc)
List.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                    String selected_item= String.valueOf(adapterView.getItemAtPosition(i));
                    position=(Integer)List.getTag(); //without this line it doesn't crash
                    Toast.makeText(Main2Activity.this,"Please Log-In"+selected_item+"Thesi :"+String.valueOf(position),Toast.LENGTH_SHORT).show();
                    Intent toy = new Intent(Main2Activity.this,Main3Activity.class);
                    startActivity(toy);
                }
            });

结果导致我的应用崩溃

目标:我希望在公共变量( 位置 )中具有选定项目的位置

Logcat:

12-03 18:16:31.858 4421-4421/gr.aegean.icsd.myapplication W/art: Before Android 4.1, method int android.support.v7.widget.ListViewCompat.lookForSelectablePosition(int, boolean) would have incorrectly overridden the package-private method in android.widget.ListView

让我提一下,我是android studio的新手。

我想你有一个ListView要添加侦听器。 在这种情况下,在onItemClick(AdapterView adapterView,View view,int i,long l)方法中,第三个参数int i保持位置。

编辑:如果要在另一个活动中使用int i,最简单的方法是在setOnItemclick所在的同一活动中声明一个静态类变量。 例如:

class MainActivity extends Activity{
    // variable accessible from anywhere in your package
    static int global_int;

    // other usual code...

    // your existing code
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                String selected_item= String.valueOf(adapterView.getItemAtPosition(i));
                position=(Integer)List.getTag(); //without this line it doesn't crash
                Toast.makeText(Main2Activity.this,"Please Log-In"+selected_item+"Thesi :"+String.valueOf(position),Toast.LENGTH_SHORT).show();
                Intent toy = new Intent(Main2Activity.this,Main3Activity.class);
                startActivity(toy);

                // saving "i"
                global_int=i;
            }
        });

}

然后从代码中的任何其他位置,其他活动等进行访问,如下所示:

int get_global_int=MainActivity.global_int;

还有其他方法,例如将其保存在SharedPreferences中,但这是最简单的方法。

尝试此操作,它将为您提供选定的项目值及其位置。

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 );


       int selectedItemPosition = listview.getItemAtPosition(position));

        Log.d("Selected item position :- ", selectedItemPosition);

    }
});

并且您可以将此项目位置存储在int变量中,请参阅上面的修改代码,我将所选项目的位置存储在int变量selectedItemPosition中。 您可以随时随地使用此selectedItemPosition

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM