Android在文本视图中查看arraylist

Android在文本视图中查看arraylist,android,textview,Android,Textview,我有一个有文本输入和按钮的程序。当我在输入中键入内容并按下按钮时,我希望将String添加到String Arraylist中,并将Arraylist显示在TextView中。现在我有一个方法: public void addString(View view) { EditText editText = (EditText) findViewById(R.id.edit_choice); String message = editText.getText().toString()

我有一个有文本输入和按钮的程序。当我在输入中键入内容并按下按钮时,我希望将
String
添加到
String Arraylist
中,并将
Arraylist
显示在
TextView
中。现在我有一个方法:

public void addString(View view)
{
    EditText editText = (EditText) findViewById(R.id.edit_choice);
    String message = editText.getText().toString();
    choices.add(message);
}

“编辑选项”是文本输入的名称,“选项”是数组列表的名称。首先,我做得对吗?第二,如何让文本视图显示“选项”的内容。现在我的
TextView
id只是
TextView 1

问题是您希望文本如何显示。。。 要么像列表视图,要么像普通文本一样。 如果您想在文本视图中将文本显示为普通文本,只需执行以下操作即可

for(String msg : choices)
{
textView1.setText(textView1.getText()+msg);
}
如果希望在列表视图中显示这些选项,则需要使用现有选项为列表视图设置适配器

首先,我做得对吗

如果对你有用,当然可以。我可能会缓存
EditText
,这样你就不必每次访问它的内容时都“找到”它


这里唯一的“问题”是,
TextView
没有接受
列表的方法。因此,您需要从字符串列表中生成一个字符串

您可以简单地迭代列表并将它们组合在一起:

StringBuilder b = new StringBuilder();
for (String s : choices){
  b.append(s+"\n");
}
textview.setText(b.toString());
这将从列表中的所有项目中生成一个字符串,在每个项目后添加换行符


您需要将
文本视图设置为
文本多行
,这样它实际上会显示多行。

请记住,在
文本视图中显示列表项并不是最好的方式。您可以使用
列表视图
执行此操作。无论如何,请看下面的伪代码(在Eclipse中没有测试它,但是,它应该显示它基本上是如何工作的):

公共类YourActivity扩展活动{
向量选择=新向量();
创建时的公共void(Bundle…){
(Button)myButton=(Button)findViewById(R.id.Button);
myButton.setOnClickListener(新的OnClickListener(){
@凌驾
公共布尔按钮。onClick(){
addString();
TextView TextView=(TextView)findViewById(R.id.text\u视图);
字符串listRepresentation=“”;
for(字符串选择:选项)
如果(“.”等于(列表表示法))
listRepresentation=选择;else
listRepresentation=“,”+选项;
setText(listRepresentation);
}
});
}
公共void addString(视图)
{
EditText EditText=(EditText)findViewById(R.id.edit\u选项);
String message=editText.getText().toString();
选择。添加(消息);
}
}

因此,只需将一个
OnClickListener
分配给您需要的按钮即可。

Java中没有
foreach
。此外,每次使用Stirng连接时,使用
+
将在内部创建一个
StringBuilder
-实例。看看我的答案。很抱歉,这是完全错误的:
foreach
确实存在!关于StringBuilder,您是对的,但我不认为这是一个严重的问题-只要列表不超过10000个条目;)@André也许我不清楚:Java中的for-each称为“扩展for循环”。java中没有
foreach
-关键字。G_S用正确的语法更正了他的答案。从未见过
foreach
关键字-如果G_S标记了他的更改,会更好。很抱歉是的,我沉迷于.net环境,并在这里应用了相同的语法。。无论如何,谢谢你纠正我:)而且我提到了编辑…好的,如果我使用列表视图,我将如何向其中添加字符串?我没有看到列表视图的set(string)方法。首先,在布局中需要一个列表视图声明;在代码中,检索ListView引用并为其赋值:
ListView ListView=(ListView)findViewById(R.id.mylist);String[]choicesArray=(String[])选项。toArray();ArrayAdapter=新的ArrayAdapter(这个,android.R.layout.simple_list_item_1,android.R.id.text1,值);setAdapter(适配器)有关更多详细信息,请参阅;请注意固定浇铸
public class YourActivity extends Activity {

  Vector<String> choices = new Vector<String>();

  public void onCreate(Bundle ....) {
    (Button) myButton =  (Button) findViewById(R.id.button);

    myButton.setOnClickListener(new OnClickListener() {
        @Override
        public boolean button.onClick() {
          addString();
          TextView textView = (TextView) findViewById(R.id.text_view);

          String listRepresentation = "";
          for (String choice : choices)
            if ("".equals(listRepresentation))
              listRepresentation  =       choice; else 
              listRepresentation  = ", " +choice;

          textView.setText(listRepresentation );
        }
     });
  }

  public void addString(View view)
  {
    EditText editText = (EditText) findViewById(R.id.edit_choice);
    String message = editText.getText().toString();
    choices.add(message);
  }
}