2013-06-22 4 views
-1

Я пытаюсь реализовать всплывающее окно, в котором вы вводите текст и добавляет его в ListView, однако я получаю следующее сообщение об ошибке:Метод GetText() не определено для типа ListView

The method getText() is undefined for the type ListView

Мой 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(); 

     } 

    }); 

} 

} 

Благодарим за помощь.

EDIT: код для запроса prompt.xml, где определено значение ListTitleDialogUserInput, выглядит следующим образом:

<?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

Что вы на самом деле пытаетесь выполнить 'result.setText (userInput.getText());' где оба результата и userInput являются Listview, поэтому getText или setText не применимы. – CRUSADER

+0

Я скопировал учебник из http: // www .mkyong.com/android/android-prompt-user-input-dialog-example /, и он использовал EditText, но я хочу отобразить результат в ListView. Не могли бы вы мне помочь? Благодарю. – user2511675

+0

Почему ваш 'userInput'' ListView'? Разве это не «EditText»? Можем ли мы увидеть файл, в котором определено представление с идентификатором «ListTitleDialogUserInput»? –

ответ

0

Вы не можете положить текст прямо в ListView - цель в ListView должен содержать другие представления.

Поместите текстовое представление, такое как TextView в свой ListView, и вызовите setText().

Если вы действительно хотите, чтобы ListView мог отображать текст напрямую, вам необходимо создать свой собственный подкласс, который расширяет ListView и делает нечетное наложение или магию замещения, чтобы вы могли отображать текст непосредственно на нем.

+0

Я извиняюсь, как бы я хотел поместить текстовое представление, такое как TextView в моем ListView? Может ли кто-то не предоставить некоторые инструкции или XML-код о том, как я получил, чтобы появилось всплывающее окно, а затем взять запись, введенную в текстовое поле во всплывающем меню, и добавить его в список? Еще раз спасибо. – user2511675

Смежные вопросы