android – 需要帮助以图像作为列表显示消息文本

我需要启动一个包含带图像的文本列表的应用程序.我需要在带有图像的列表中显示这些文本消息.我通过使用线性布局显示这些消息与图像,如下所示.

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来做到这一点,但我只得到最后一个图像视图ID.

我知道有listview,但它是否适合我的要求?我不知道怎么办我的任务.谁能帮帮我吗?

解决方法

我做了类似的事情..我刚刚做了一个TextViews列表(每行两个TextView),我需要更新列表中的一个TextView ..我做的是一个垂直的LinearLayout,并添加包含我的TextViews的Horizo​​ntal LinearLayouts ..然后我有一个字符串列表来查找我需要修改的索引,然后使用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,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解决方案是我实现的更优雅的版本,但我还没有这样做.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...