Java Android Studio如何创建具有多个字符串的edittext?
我想用edittext创建这样一个视图。我必须创建edittext和输入字符串中的字符一样多 我以前在activity_main.xml文件中定义了linerLayout。然后我在其中创建了edittext。我最后的看法如下 我的代码如下Java Android Studio如何创建具有多个字符串的edittext?,java,android,Java,Android,我想用edittext创建这样一个视图。我必须创建edittext和输入字符串中的字符一样多 我以前在activity_main.xml文件中定义了linerLayout。然后我在其中创建了edittext。我最后的看法如下 我的代码如下 public void init() { question = new ArrayList<>(); question.add("hello"); question.add("heyo&q
public void init() {
question = new ArrayList<>();
question.add("hello");
question.add("heyo");
question.add("Everyone");
final ArrayList<EditText>[] array_edit_text = new ArrayList[question.size()];
LinearLayout linearLayout = findViewById(R.id.game_questions_relative_layout);
for (int j = 0; j < question.size(); j++) {
array_edit_text[j] = new ArrayList<>();
LinearLayout linearLayout2 = new LinearLayout(this);
LinearLayout.LayoutParams layoutParams2 = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
layoutParams2.setMargins(10, 20, 10, 20);
for (int i = 0; i < question.get(j).length(); i++) {
LinearLayout linearLayout3 = new LinearLayout(this);
linearLayout3.setOrientation(LinearLayout.HORIZONTAL);
linearLayout3.setGravity(Gravity.CENTER);
LinearLayout.LayoutParams layoutParams3 = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
EditText editText = new EditText(this);
editText.setText(" ");
editText.setBackgroundColor(Color.TRANSPARENT);
array_edit_text[j].add(editText);
linearLayout3.setBackgroundResource(R.drawable.grey_background_5dp);
linearLayout3.addView(editText, layoutParams3);
linearLayout2.setGravity(Gravity.CENTER);
linearLayout2.addView(linearLayout3, layoutParams2);
}
linearLayout.addView(linearLayout2);
}
}
public void init(){
问题=新的ArrayList();
问题。加上(“你好”);
问题。添加(“heyo”);
问题。添加(“所有人”);
最终ArrayList[]数组_编辑_文本=新的ArrayList[question.size()];
LinearLayout LinearLayout=findViewById(R.id.game\u questions\u relative\u layout);
对于(int j=0;j
但我的问题是我不能在这些文本之间切换。输入字符后,我必须切换到另一个字符。或者单击“删除”按钮应切换到上一个按钮
你能帮我吗?我不能推进这个计划。从现在开始谢谢您…您可以通过使用文本观察者类来实现这一点,然后在TextWatcher的OnTextChanged()方法中将焦点设置在下一个EditText上 在您的情况下,可以尝试以下代码:-
editText.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start,int before, int count)
{
if(//some condition) //if some condition focus the next edit text
{
array_edit_text[j+1].requestFocus();
}
if(//some condition) //if some other condition focus the previousedit text
{
array_edit_text[j-1].requestFocus();
}
}
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
// TODO Auto-generated method stub
}
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
你试过使用吗?您可以使用以下代码
private TextWatcher mTextWatcher = new TextWatcher() {
@Override
public void afterTextChanged(Editable editable) {
// setFocus to the next Edittext
nextEditText.requestFocus();
}
};
然后可以将TextWatcher与editText关联
editText.addTextChangedListener(mTextWatcher);
阅读更多内容:很抱歉,很遗憾,我必须将“I”和“j”变量定义为“final”,很遗憾,我无法访问下一个edittex。您可以将I和j复制到循环中的final变量中。我不明白你评论的第二部分。不管是哪种方式,也许您需要以某种方式重构代码以使其正常工作,但我的回答只是向您展示了如何在EditText之间更改焦点,只要其中一个文本发生更改。你如何精确地实现它,你使用的逻辑也取决于你自己,如果在你创建编辑文本的过程中这样做,考虑简单地在你第一次完成之后,当所有编辑文本都已在ArrayList中创建时--file:///tmp/Spectacle.YRvPtK/Screenshot_20200831_220300.png --这就是我想告诉你的。我必须将其定义为“最终”才能使用这些值。但是我无法更改“final”变量,因此无法访问下一个edittext我尝试了此用法,但是当我返回所有edittext时,当我为每个edittext创建此方法时,我无法访问下一个edittex。我必须定义循环值作为“最终的”。