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);
}
}