【问题标题】:How to start Activity with Intent in ListView.setOnItemClickListener?如何在 ListView.setOnItemClickListener 中使用 Intent 启动 Activity?
【发布时间】:2015-01-03 00:12:06
【问题描述】:

我想在我的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);
    }
});

【问题讨论】:

  • 您是否使用断点或日志消息来确保调用 onItemClick?
  • 没有。我该怎么做?
  • ListView.setOnItemClickListener 应该是listView.setOnItemClickListener,对吧?另外,如果您在 Activity 中,请尝试 MyActivity.this.startActivity(myIntent);
  • 使用Intent myIntent = new Intent(ActivtiyName.this, SecondActivity.class);

标签: java android listview android-intent android-activity


【解决方案1】:

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

ListView yourListView.setOnItemClickListener

那么你需要在Intent中传递activity的上下文

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

代码 sn-p:

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

希望对你有所帮助ツ

【讨论】:

    【解决方案2】:

    为您的 ListView 试试这个

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

    另外,请确保列表项内的 CheckBox 设置焦点为 false

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

    来源:setOnItemClickListener() not working on custom ListView @ Android

    【讨论】:

      【解决方案3】:

      尝试使用此代码,

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

      【讨论】:

      • 用代码给出一些描述,以澄清当前代码中的错误。 仅代码答案不明显。
      【解决方案4】:

      对于 ListView 中的 Multiple 选项,您可以使用以下代码。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多