editText.getText()。toString()不起作用?

时间:2011-05-01 03:04:02

标签: android

这是我目前的代码。基本上它用'com.teslaprime.prirt.Task@44ef98aO'填充我的列表,我假设它是该类的特定实例。任何想法?

package com.teslaprime.prirt;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.List;

public class TaskList extends Activity {
  List<Task> model = new ArrayList<Task>();
  ArrayAdapter<Task> adapter = null;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Button add = (Button) findViewById(R.id.add);
    add.setOnClickListener(onAdd);

    ListView list = (ListView) findViewById(R.id.tasks);

    adapter = new ArrayAdapter<Task>(this,android.R.layout.simple_list_item_1,model);
    list.setAdapter(adapter);
  }

  private View.OnClickListener onAdd = new View.OnClickListener() {
    public void onClick(View v) {
      Task task = new Task();
      EditText name = (EditText) findViewById(R.id.taskEntry);

      task.name = name.getText().toString();

      adapter.add(task);
    }
  };
}

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  >
  <LinearLayout android:id="@+id/entryBar"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    >
    <EditText android:id="@+id/taskEntry"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_weight="1"
    />
    <Button android:id="@+id/add"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Add"
    />
  </LinearLayout>
  <ListView android:id="@+id/tasks"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_above="@id/entryBar"
  />
</RelativeLayout>

2 个答案:

答案 0 :(得分:1)

看起来你正在其他地方呼叫task.toString()

adapter.add(task.name);班级

中尝试toString()或覆盖Task

您在列表中看到的内容:com.teslaprime.prirt.Task@44ef98aOObject.toString()的输出。您需要覆盖它以使其返回您想要的字符串:

public class Task {
  // all your code here
  @Override
  public String toString() {
    return this.name;
  }
}

答案 1 :(得分:1)

您的EditText很好,但您要将其添加到该任务并将任务添加到适配器。将name.getText().toString();添加到adapter而不是任务。