【问题标题】:When ListView item is clicked it wont transition to next activity单击 ListView 项目时,它不会转换到下一个活动
【发布时间】:2015-07-13 19:51:49
【问题描述】:

在我的 android 应用程序中,当单击我的 ListView 中的项目时,它应该打开活动 FixtureDescription 每个项目应该打开相同的活动,但对于每个新项目,它都开始为空。这是我的 .java 文件,目前该列表已从 AlertDialog 正确填充,但是当单击它时,它不会从它所在的活动中移动。有什么建议吗?

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;

import static android.widget.AdapterView.*;


public class RoomDescription extends ActionBarActivity {

    public AlertDialog.Builder dialogBuilder;
    public ArrayList<String> myFixtures = new ArrayList<String>();
    public String listItem;

    private void setFixtureName()
    {
        dialogBuilder = new AlertDialog.Builder(this);
        final EditText txtInput = new EditText(this);


        dialogBuilder.setTitle("Fixture Name");
        dialogBuilder.setMessage("What is the fixture name?");
        dialogBuilder.setView(txtInput);
        dialogBuilder.setPositiveButton("Add", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                myFixtures.add(txtInput.getText().toString());
                populateListView();
                Toast toast = Toast.makeText(getApplicationContext(), "Fixture has been added.", Toast.LENGTH_SHORT);
                toast.show();
            }
        });
        dialogBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which)
            {

            }
        });

        AlertDialog dialogFixtureName = dialogBuilder.create();
        dialogFixtureName.show();
    }

    public void onClick(View v)
    {
        setFixtureName();
    }

    public void onItemClick()
    {
        ListView list = (ListView) findViewById(R.id.FixtureList);
        list.setOnItemClickListener(new AdapterView.OnItemClickListener()
        {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id)
            {
                switch (position)
                {
                    default:Intent i = new Intent(RoomDescription.this, FixtureDescription.class);
                        startActivity(i);
                        break;
                }

            }

        });

    }
    private void populateListView()
    {
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.items, myFixtures);

        ListView list = (ListView) findViewById(R.id.FixtureList);
        list.setAdapter(adapter);
    }

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

        populateListView();
    }

    @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_room_description, 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);
    }
}

【问题讨论】:

    标签: android listview android-studio


    【解决方案1】:

    您介绍了一种从未使用过的方法:onItemClick()。通过使用良好的 IDE(我强烈建议您使用 Android Studio),您将在编辑器中看到此类警告。

    OnItemClickListener 应该在创建视图时注册,在onCreate()

    (同样,活动的onClick() 永远不会执行。)

    【讨论】:

      【解决方案2】:

      您的 OnItemClickListener 位于您不调用的方法中 - Android 或类似的东西不会自动调用它。

      您应该在Activity 中的onCreate() 中添加OnItemClickListener 的代码,以便初始化单击侦听器,然后能够对项目单击执行操作。

      需要明确的是,onItemClick() 方法中的内容是初始化侦听器,以便它开始侦听点击。由于您希望它始终“监听”项目点击,您应该将代码移至 onCreate()

      【讨论】:

        猜你喜欢
        • 2016-04-08
        • 1970-01-01
        • 2020-02-17
        • 1970-01-01
        • 2018-04-13
        • 1970-01-01
        • 1970-01-01
        • 2019-02-26
        • 1970-01-01
        相关资源
        最近更新 更多