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

时间:2017-12-03 16:11:17

标签: android listview

我正试图获得所选项目的位置,如下所示:

//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的新手。

2 个答案:

答案 0 :(得分:1)

我猜你有一个想要添加监听器的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中,但这是最简单的方法。

答案 1 :(得分:1)

试试这个它会给你所选的项目值及其位置。

selectedItemPosition

你可以在int变量中存储这个项目位置,参见上面修改过的代码,我将所选项目位置存储在int变量selectedItemPosition中。你可以在任何你想要的地方使用address=/dev/127.0.0.1