【问题标题】:How to make a onClick for a ListView item? [Not a duplicate] [duplicate]如何为 ListView 项目制作 onClick? [不重复] [重复]
【发布时间】:2015-09-01 10:41:30
【问题描述】:

这是我的主要活动:

    package com.example.uilistview;

import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;


public class MainActivity extends ListActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setListAdapter(new ArrayAdapter<String>(this, R.layout.activity_main,
                getResources().getStringArray(R.array.listnames)));

        ListView lv = getListView();
    }


    }


}

我的第二个活动:

package com.example.uilistview;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;


public class SecondActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_second, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

我的列表视图的字符串数组:

<string-array name="listnames">
    <item onClick="onItemClick" id="iOS">iOS</item>
    <item>Android</item>
    <item>Windows</item>
    <item>Mac</item>
    <item>Linux</item>
    <item>Ubunto</item>
</string-array>

单击 iOS 后,我希望它加载 SecondActivity。我已经尝试了很多东西。我到处看了看。我知道我必须放置一个 onClick 侦听器之类的东西。 评价。 编辑:现在你们都在说重复和所有的废话,但我到处搜索,找不到正确的解释。

【问题讨论】:

  • 你试过 OnitemClickListener 吗?
  • 这个问题在 StackOverflow 上已经回答过好几次了...
  • @Andrea Cinesi,如何设置 OnItemClickListener?我什至尝试过其他主题,但没有任何帮助。
  • 尝试 Roon13 答案,什么不起作用?

标签: java android onclick


【解决方案1】:

您的 MainActivity 应该如下所示。

    package com.example.uilistview;

import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;


public class MainActivity extends ListActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setListAdapter(new ArrayAdapter<String>(this, R.layout.activity_main,
                getResources().getStringArray(R.array.listnames)));

        ListView lv = getListView();
        lv.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> arg0, View view, int arg2,
                        long arg3) {
        Intent intent = new Intent(MainActivity.this, SecondActivity.class);
        startActivity(intent);
    }


    } );  }

【讨论】:

  • 我怎么能感谢你呢?非常感谢!!!我浏览了整个 DEVELOPER.ANDROID.COM 网站和这个论坛,但从未找到兼容的东西!
【解决方案2】:

将 setOnitemClickListener 附加到您的 ListView 并在 onItemClick 方法中,使用 Intent 打开您的 SecondActivity。

 ListView lv = getListView();
 lv.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> arg0, View view, int arg2,
                        long arg3) {
                     Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                     startActivity(intent);
                }
            });

【讨论】:

    【解决方案3】:

    在您的 ListActivity 中覆盖 onListItemClick 并从那里开始您的第二个活动:

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        Intent intent = new Intent(this, SecondActivity.class);
        startActivity(intent);
    }
    

    【讨论】:

      【解决方案4】:

      试试这个(考虑到 IOS 位置在你的数组中是第一个)

      lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {
      switch(position)
      {
      case 0:
      Intent intent = new Intent();
      intent.setClass(this, Other_Activity.class);
      startActivity(intent);
        }
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-02-23
        • 2018-06-12
        • 2020-11-07
        • 2014-08-20
        • 2013-12-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多