Нужна помощь для отображения текста сообщения с изображениями в виде списка

Мне нужно запустить приложение, содержащее список текстов с изображениями. Мне нужно отобразить эти текстовые сообщения в списке с изображениями. Я показываю эти сообщения с изображениями, используя линейные макеты, как показано ниже.

for(int i=0;i<messages.size();i++) { FrameLayout f1= new FrameLayout(this); LinearLayout l1 = new LinearLayout(this); LinearLayout l2 = new LinearLayout(this); im =new ImageView(this); TextView tv =new TextView(this); tv.setText(messages.get(i).getmessage()); im.setImageResource(R.drawable.person); l1.addView(tv); l2.addView(im); f1.addView(l1); f1.addView(l2); ((LinearLayout)findViewById(R.id.LinearlayoutMessage)).addView(f1); } 

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

Я знаю, что есть listview, но подходит ли это для моего требования? Я не знаю, как я могу выполнить свою задачу. Кто-нибудь может мне помочь, пожалуйста!

Я сделал что-то подобное. Я просто сделал список TextViews (два TextView для каждой строки), и мне нужно было обновить один TextView в списке. То, что я сделал, это вертикальный LinearLayout и добавить горизонтальные LinearLayouts, содержащие мои текстовые элементы. Затем у меня был список строк для поиска индекса того, который мне нужно было изменить, а затем LinearLayout.getChildAt(int) поиск с помощью LinearLayout.getChildAt(int) и обновить значение …

КОД: У меня есть список строк и счетчик, в котором говорится, сколько раз приходила эта строка …

 private ArrayList<String> strList; private ArrayList<Integer> counterList; 

Когда String является новой:

 strList.add(new_string); TextView str = new TextView(getApplicationContext()); str.setText(sTemp); str.setLayoutParams(strsTextView.getLayoutParams()); TextView strcounter = new TextView(getApplicationContext()); strcounter.setLayoutParams(counterTextView.getLayoutParams()); LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT,1); LinearLayout ll = new LinearLayout(this); ll.setLayoutParams(new LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT)); ll.setOrientation(LinearLayout.HORIZONTAL); ll.addView(str, layoutParams); layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT,3); counterList.add(1); strcounter.setText("1"); ll.addView(strcounter, layoutParams); mLinearLayout.addView(ll,new LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT)); 

Я проверяю, является ли String не новой (уже в strList), if(strList.indexOf(sTemp)!=0) а затем выполните следующие действия:

 Integer intaux =counterList.get(index); intaux++; counterList.set(index, intaux); LinearLayout aux = (LinearLayout)mLinearLayout.getChildAt(index); TextView aux2 = (TextView)aux.getChildAt(1); aux2.setText(Integer.toString(intaux)); 

Надеюсь, я ничего не пропустил и что это сработает для вас. Если вы ничего не понимаете, скажите мне, я пытаюсь объяснить / исправить.

PS: Я полагаю, что решение адаптера @abhijeet Adapter является более элегантной версией моей реализации, но я этого не сделал.

Мое предложение было бы использовать Adapter для показа изображения и соответствующего текста. Это поможет вам выбрать выбранный / сфокусированный предмет.

Пожалуйста, поделитесь результатами.