' Please find this attachment我创建了一个只包含一个编辑文本的XML文件。在java类中,我动态地膨胀XML文件以创建多个编辑文本字段。现在问题是所有编辑文本字段的资源ID都相同。那么有什么方法可以提供不同的资源ID。请帮帮我。
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.widget.EditText;
import android.widget.LinearLayout;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
EditText[] sample;
Boolean Valid;
ArrayList<String> obj_array = new ArrayList<>();
LinearLayout root_layout;
LayoutInflater inflater;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
root_layout = (LinearLayout) findViewById(R.id.root);
init();
}
private void init() {
obj_array.add("abc");
obj_array.add("def");
obj_array.add("ghi");
obj_array.add("jkl");
assignToValue();
}
private void assignToValue() {
sample = new EditText[obj_array.size()];
for (int i = 0; i < obj_array.size(); i++) {
// here i'm dynamically creating edit text .
View v= inflater.inflate(R.layout.edittext,null);
sample[i] = (EditText) v.findViewById(R.id.edit);
sample[i].setText(obj_array.get(i));
root_layout.addView(sample[i]);
}
}
}'
答案 0 :(得分:1)
这样的事情可以帮到你:
创建一个文件res/values/ids.xml
,例如带有这样的内容(带有动态设置的ID):
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item type="id" name="id1" />
<item type="id" name="id2" />
<item type="id" name="id3" />
</resources>
然后你可以添加像这样的java代码行:
edit1.setId(R.id.layout1);
edit2.setId(R.id.layout2);
edit3.setId(R.id.layout3); //where edit1, edit2 and edit3 are sample dynamically created EditTexts for example
答案 1 :(得分:0)
这个问题已经得到解答
答案 2 :(得分:0)
创建一个16位整数作为基本ID,比如baseId = 1234567890123450
通过类(Edittext
)中的方法setId将其设置为editTextVariable.setId(baseId)
的ID
当新的edittext
被夸大时,将{1}添加1并将其设置为新增的baseId
。
对于每个新添加的edittext
,将1添加到先前的ID并进行设置。
保留变量中添加edittext
的数量。