Vivek Kansal Ответов: 2

Массив в r.id.i[I] android


TextView[] t = new TextView[8];
t[0] = (EditText)findViewById(R.id.seller1);
t[1] = (EditText)findViewById(R.id.seller2);
t[2] = (EditText)findViewById(R.id.seller3);
t[3] = (EditText)findViewById(R.id.seller4);
t[4] = (EditText)findViewById(R.id.seller5);
t[5] = (EditText)findViewById(R.id.seller6);
t[6] = (EditText)findViewById(R.id.seller7);
t[7] = (EditText)findViewById(R.id.seller8);

И Продолжайте

Что я уже пробовал:

t[i] = (EditText)findViewById(R.id.selleri);
повторяется много раз в моем коде,поэтому я пытаюсь заменить seller1, seller2 ... каким-то массивом selleri. Так что я должен попробовать
String[] Seller = {"seller1","seller2","seller3","seller4"};
и замените его в
t[i] = (EditText)findViewById(R.id.seller[i]);
но дает ошибку на seller[i].

2 Ответов

Рейтинг:
0

Richard MacCutchan

Как вы можете видеть из ваших звонков в findViewById, вы не можете использовать строки для ссылки на ресурсы, вы должны использовать фактические идентификаторы ресурсов. Так что вы могли бы попробовать что-то вроде:

int[] Sellers = {r.id.seller1, r.id.seller2, r.id.seller3, r.id.seller4, ...};
// and replace it in 
t[i] = (EditText) findViewById(Sellers[i]);
Но все это напрашивается на вопрос: действительно ли вам нужно EditText типы для этого, или может быть List<T> работать лучше?


Vivek Kansal

Не работает, сэр. Как List<t> может заменить EditText? Есть ли какой-нибудь пример?

Richard MacCutchan

Я понятия не имею, вам нужно подумать о том, что вы пытаетесь сделать, и является ли ваш дизайн лучшим способом сделать это. Зайдите на сайт разработчика Android и посмотрите документацию, она содержит всю необходимую вам информацию.

Sandeep Mewara

5! выше предложенный фрагмент кода имеет смысл и должен работать (массив с фактическими идентификаторами)

Рейтинг:
0

Sandeep Mewara

Если у вас есть фиксированное соглашение об именовании, то код, подобный приведенному ниже, будет проще вместо определения массива со всеми идентификаторами.

Попробуй:

ArrayList<EditText> myList = new ArrayList<EditText>();

// Removed array
String sellerID;
int resourceViewID; 

for (int i = 0; i < 4; i++)
{
   sellerID = "seller" + i;
   resourceViewID = getResources().getIdentifier(sellerID, "id", getPackageName());
   myList.add((EditText)findViewById(resourceViewID);
}

Ссылка: Java ArrayList[^]
Цитата:
Разница между встроенным массивом и ArrayList в Java заключается в том, что размер массива не может быть изменен (если вы хотите добавить или удалить элементы в/из массива, вы должны создать новый).


Richard MacCutchan

"// Все в разделе идентификаторы viewid элементов здесь может быть любой код"
Да, но это не так Stringс.

Sandeep Mewara

Спасибо. Да, я обновился с изменением. Мы можем найти этот идентификатор с помощью строки и использовать его. :большой палец вверх:

Richard MacCutchan

Сегодня я узнал кое-что новое. +5.