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

时间:2013-06-22 16:15:51

标签: java android eclipse android-activity

我正在尝试实现一个弹出窗口,您可以在其中键入文本并将其添加到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>

1 个答案:

答案 0 :(得分:0)

不能直接在ListView中放置文本 - ListView的目的是包含其他视图。

在ListView中放置文本兼容的视图,例如TextView,并在其上调用setText()。

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