微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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解决方案是我实现的更优雅的版本,但我还没有这样做.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐