Я создал файл xml, который я хочу повторить несколько раз и заполнить в основном представлении. Я прочитал, что LayoutInflater - это путь, но у меня возникают проблемы с его работой
Первый вопрос. созданный мной элемент xml имеет в нем несколько текстовых полей. Можно ли это сделать или может содержать только один текстовый просмотр?
ScrollView mainlayout = (ScrollView) findViewById(R.id.ScrollView1);
LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = (View) inflater.inflate(R.layout.sightmarks_item, null);
TextView textview1 = (TextView) inflater.inflate(R.id.textView1, null);
EditText editview1 = (EditText) inflater.inflate(R.id.editview1, null);
EditText editview2= (EditText) inflater.inflate(R.id.editview2, null);
Затем я запускаю цикл for в массиве и устанавливаю текст для каждого из приведенных выше значений, а затем добавляя представление в представление mainlayout
В настоящее время это ошибка при завышенном виде. я делаю это правильно?
благодаря
В вашем коде есть некоторые проблемы. Чтобы получить элемент любого вида, используйте метод findViewById
ScrollView mainlayout = (ScrollView) findViewById(R.id.ScrollView1);
LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = (View) inflater.inflate(R.layout.main, null);
TextView textview1 = (TextView) view.findViewById(R.id.textview1);
EditText editview1 = (EditText) view.findViewById(R.id.editview1);
EditText editview2= (EditText) view.findViewById(R.id.editview2);
Я не думаю, что вы делаете это правильно. Первое, что нужно знать, это то, что Scrollview может содержать только один элемент. У вас есть уникальный LinearLayout или TableLayout в вашем Scrollview, чтобы инкапсулировать textViews после?
На твоем месте:
В вашем файле макета XML (я назвал его "yourfile" здесь), используйте иерархию, такую как:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" ... />
<LinearLayout ...>
<TextView .../>
<TextView .../>
...
</LinearLayout>
</ScrollView>
Затем в вашей деятельности раздуйте прокрутку:
ScrollView mScroll = (ScrollView) getLayoutinflater().inflate(R.layout.yourfile, null)
Затем, чтобы получить TextViews, просмотрите свой ScrollView с помощью getChild(). Например, чтобы присвоить "мой текст" первому текстуру, это должно работать:
( (TextView) ((ViewGroup) mScroll.getChildAt(0)).getChildAt(0)).setText("my text");
Чтобы понять: если вы хотите достичь единственного LinearLayout, который вы делаете
mScroll.getChildAt(0)
Итак, чтобы перейти к первому текстовому представлению (первый ребенок LinearLayout), вы делаете
mScroll.getChildAt(0).getChildAt(0)