我需要启动一个包含带图像的文本列表的应用程序.我需要在带有图像的列表中显示这些文本消息.我通过使用线性布局显示这些消息与图像,如下所示.
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的Horizontal 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 举报,一经查实,本站将立刻删除。