-1

我正在尝试实现一个弹出窗口,您可以在其中键入文本并将其添加到 ListView 但是我收到以下错误:

对于 ListView 类型,方法 getText() 未定义

我的 MainActivity.java 代码如下:

package com.mkyong.android;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;

public class MainActivity extends Activity {

    final Context context = this;
    private Button button;
    private ListView result;

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    // components from main.xml
    button = (Button) findViewById(R.id.buttonPrompt);
    result = (ListView) findViewById(R.id.listView1);

    // add button listener
    button.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {

            // get prompts.xml view
            LayoutInflater li = LayoutInflater.from(context);
            View promptsView = li.inflate(R.layout.prompts, null);

            AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                    context);

            // set prompts.xml to alertdialog builder
            alertDialogBuilder.setView(promptsView);

            final ListView userInput = (ListView) promptsView
                    .findViewById(R.id.ListTitleDialogUserInput);

            // set dialog message
            alertDialogBuilder
                    .setCancelable(false)
                    .setPositiveButton("Create",
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog,
                                        int id) {
                                    // get user input and set it to result
                                    // edit text
                                    result.setText(userInput.getText());
                                }
                            })
                    .setNegativeButton("Cancel",
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog,
                                        int id) {
                                    dialog.cancel();
                                }
                            });

            // create alert dialog
            AlertDialog alertDialog = alertDialogBuilder.create();

            // show it
            alertDialog.show();

        }

    });

}

}

感谢你的协助。

编辑: 定义 ListTitleDialogUserInput 的 for prompts.xml 的代码如下;

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout_root"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
            android:id="@+id/textView1"
        android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="List Title: "
            android:textAppearance="?android:attr/textAppearanceLarge" />

    <EditText
            android:id="@+id/ListTitleDialogUserInput"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <requestFocus />
    </EditText>

</LinearLayout>
4

1 回答 1

0

不能将文本直接放入 ListView - ListView 的目的是包含其他视图。

在 ListView 中放置一个文本兼容的视图,例如 TextView,然后调用 setText()。

如果你真的想要一个可以直接显示文本的 ListView,你必须创建你自己的子类来扩展 ListView 并做一些奇怪的覆盖或替换魔法来让你直接在上面显示文本。

于 2013-06-23T00:13:29.760 回答