我正在制作将字符串数组列表发送到另一个活动的应用程序,而在另一个活动中,它会获取所有项目并为每个项目创建文本视图,但我不知道该怎么做。< / p>
这是我的第一个活动代码:
package com.TOF.versus;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity{
Button exitBtn;
EditText namesTxt;
TextView namesNumber;
Button namesBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
exitBtn=(Button) findViewById(R.id.exitBtn);
exitBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
namesNumber=(TextView)findViewById(R.id.namesNumber);
namesTxt = (EditText) findViewById(R.id.namesTxt);
namesBtn=(Button)findViewById(R.id.namesBtn);
inputName();
}
public void inputName(){
final ArrayList <String> names= new ArrayList<String>();
namesTxt.setSingleLine();
namesTxt.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) {
names.add(namesTxt.getText().toString());
namesNumber.setText(Integer.toString(names.size()));
namesTxt.setText("");
namesBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent send = new Intent(v.getContext(), Names.class);
send.putStringArrayListExtra("E",names);
startActivity(send);
}
});
}
return false;
}});}}
这是我不知道如何制作文字视图的第二个活动代码:
package com.TOF.versus;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.TextView;
import java.util.ArrayList;
public class Names extends AppCompatActivity {
Button backBtn;
RelativeLayout names_layout;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.names_layout);
backBtn=(Button)findViewById(R.id.backBtn);
backBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
names_layout=(RelativeLayout) findViewById(R.id.db2_root);
TextView text=new TextView(this);
Intent recv=getIntent();
ArrayList<String> str= recv.getStringArrayListExtra("E");
text.setText(str.get());
text.setLayoutParams(new ActionBar.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT));
names_layout.addView(text);
System.out.println(str);
}
}
答案 0 :(得分:2)
您需要循环使用您获得的列表创建的ArrayList 意图。
ArrayList<String> str= recv.getStringArrayListExtra("E");
for (int i = 0; i < str.size(); i++) {
TextView text = new TextView(this);
text.setText(str.get(i));
text.setLayoutParams(new
ActionBar.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT));
names_layout.addView(text);
}
所以这循环通过str ArrayList
,创建一个TextView
的新实例,获取对应于数组中该位置的字符串,设置文本,布局参数然后添加它&#39 ; s到你的布局。
修改强>:
如果您要动态添加视图,我建议您使用LinearLayout
分配方向,而不是RelativeLayout
names_layout
,除非您学习如何应用规则。
取自How do I specify layout_below programmatically for a LinearLayout?
的示例RelativeLayout.LayoutParams relativeParams = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
relativeParams.addRule(RelativeLayout.BELOW, idOfTheViewBelow);
编辑2 :
LinearLayout和RelativeLayout有什么区别?
这应该提供足够的信息供您理解