如何在 ListView.setOnItemClickListener 中启动具有意图的活动



我想在单击Listview中的项目时启动新活动。但是当单击一个项目时,没有任何反应。Logcat 消息中没有任何内容。这两个活动都在 AndroidManifest 中声明。

ListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {   
        Intent myIntent = new Intent(view.getContext(), SecondActivity.class);
        myIntent.putExtra("test", "hello"); 
        startActivity(myIntent);
    }
});

首先,您需要在 listView 对象中设置ItemClick listener

ListView yourListView.setOnItemClickListener

然后,您需要在Intent中传递活动的上下文

Intent myIntent = new Intent (view.getContext()ThisActivityName.this, SecondActivity.class);

代码片段:

ListView yourListView = (ListView) findViewById(R.id.listviewid);
yourListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {   
        Intent myIntent = new Intent(ThisActivityName.this, SecondActivity.class);
        myIntent.putExtra("test", "hello"); 
        startActivity(myIntent);
    }
});

希望对ツ有帮助

试试这个列表视图

final ListView list = (ListView) findViewById(R.id.list);
list.setItemsCanFocus(false);

此外,请确保列表项内的复选框设置为可聚焦 false

android:focusable="false"
android:focusableInTouchMode="false"

来源:setOnItemClickListener() 不适用于自定义列表视图 @ Android

尝试使用此代码,

ListView listView=(ListView) findViewById(R.id.list);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {   
    Intent myIntent = new Intent(ActivityName.this, SecondActivity.class);
    myIntent.putExtra("test", "hello"); 
    startActivity(myIntent);
}
});

对于列表视图中的多个选项 您可以使用以下代码。

 lv_1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
            String s = lv_1.getItemAtPosition(position).toString();
            Toast.makeText(getApplicationContext(), s, Toast.LENGTH_LONG).show();

            switch (position) {
                case 0:
                    Intent newActivity = new Intent(MainActivity.this, Android.class);
                    startActivity(newActivity);
                    break;
                case 1:
                    Intent newActivity1 = new Intent(MainActivity.this, Iphone.class);
                    startActivity(newActivity1);
                    break;
                case 2:
                    Intent newActivity2 = new Intent(MainActivity.this, Window.class);
                    startActivity(newActivity2);
                    break;

            }
        }
        ;
    });

最新更新