Я разрабатываю приложение на андроиде, и я генерирую элементы пользовательского интерфейса в цикле. Но мне нужны эти элементы, чтобы иметь идентификатор с буквами и цифрами, например "rl1"
или "rl2"
. Я пытался использовать метод RelativeLayout.setId()
, но этот метод принимает только int
. Есть ли способ установить идентификатор, который я хочу, не ограничиваясь числами?Как назначить идентификатор строки для элементов интерфейса.
Спасибо.
Вот код, который я пытаюсь сделать.
for (int i=1; i < 10; i++)
{
//gets the frameview where the elements will be created.
String LinearLayoutId = "frameview1";
int resID = getResources().getIdentifier(LinearLayoutId, "id", "com.myapp.ERS");
LinearLayout linearLayout = (LinearLayout)findViewById(resID);
//creates the RelativeLayout that will hold the ImageIcon and the TextView
RelativeLayout rl = new RelativeLayout(this);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT,40);
rl.setLayoutParams(lp);
rl.setId("rl"); /// >>>> I would like here to set and ID of "rl1" for example.
rl.setBackgroundDrawable(getResources().getDrawable(R.drawable.bk36));
//creates the image icon within the layout at the left side
ImageView image = new ImageView(this);
lp = new RelativeLayout.LayoutParams(
40,RelativeLayout.LayoutParams.MATCH_PARENT);
image.setLayoutParams(lp);
String imageicon = "icon_"+i;
resID = getResources().getIdentifier(imageicon, "drawable", "com.myapp.ERS");
image.setImageDrawable(getResources().getDrawable(resID)); //sets the icon
rl.addView(image); //adds the ImageView to the relative layout
//creates the TextView within the layout with a 40 margin to the left
TextView tv = new TextView(this);
lp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT,RelativeLayout.LayoutParams.MATCH_PARENT);
lp.setMargins(40, 0, 0, 0);
tv.setLayoutParams(lp);
String textViewID = "tv"+i;
resID = getResources().getIdentifier(textViewID, "string", "com.myapp.ERS");
tv.setText(getResources().getString(resID));
tv.setTextColor(Color.BLACK);
tv.setTextSize(25);
rl.addView(tv);//adds the TextView to the relative layout
rl.setOnClickListener(mAddListener);
linearLayout.addView(rl);//adds the RelativeLayout to the LinearLayout
}
, а затем у меня есть OnCLickListener как это ...
private OnClickListener mAddListener = new OnClickListener()
{
public void onClick(View v){
Intent intent;
Bundle bundle;
String id = getResources().getResourceEntryName(v.getId());
id = id.replaceAll("\\D+","");
int value = Integer.parseInt(id);
intent = new Intent(ERS.this, ShowInfo.class);
bundle = new Bundle();
bundle.putInt("key", value);
System.out.println(v.getId());
intent.putExtras(bundle);
startActivity(intent);
}
};
Я попытался установить числовые идентификаторы, но потом, когда я смотрю на них с:
String id = getResources().getResourceEntryName(v.getId());
Он не может их найти.
У меня было все это в файле xml
, но это было очень долго, потому что в списке было около 40 наименований, и мне было сложно сменить письмо, например, во всех из них , Я придумал эту идею, чтобы сгенерировать их во время выполнения в for loop
. Тем временем я тестирую десять, но я не могу заставить его работать.
Если я делаю что-то неправильное, то прошу прощения, но я новичок в этом.
Я новичок в этом, и я не знаю, что вы подразумеваете под SharedPreferences – jorgerodriguezhn
. Посмотрите эту ссылку о том, как его использовать: http://developer.android.com/guide/topics/data/data-storage. html # pref –
@jerisalan, если вы просматриваете код, генерируемые элементы - это макеты, ImageViews и другие элементы пользовательского интерфейса. Я не думаю, что SharedPreferences - это действительно способ пойти для хранения идентификаторов для них. – Chilledrat