动态给listview的item添加样式?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态给listview的item添加样式?相关的知识,希望对你有一定的参考价值。

给listview嵌套textview控件和button控件,当textview的值为1时,linearlayout背景色为红色,当textview的值为2时,按钮的背景色为蓝色。如示意图:

给listview里的记录单独定义一个itm.xml文件,单独定义一条记录的布局,像你的可能就是横向的LinearLayout。在getview通过convertView = inflater.inflate(R.layout.xxxx, null)获得view,然后由获得的view得到每条记录的空间(TextView) convertView.findViewById(R.id.xxxx),你这个获得TextView后向里面赋值,赋值完了再根据所赋值设置背景颜色就可以了 查看原帖>> 参考技术A listview给item添样式代码如下:
private void Page_Loaded(object sender, RoutedEventArgs e)

ListView.ItemContainerGenerator.StatusChanged += new EventHandler(ItemContainerGenerator_StatusChanged);


delegate void VoidDelegate();

void ItemContainerGenerator_StatusChanged(object sender, EventArgs e)


System.Threading.ThreadStart ts = new System.Threading.ThreadStart(JugeRead);
System.Threading.Thread t = new System.Threading.Thread(ts);
t.Start();


private void JugeRead()

this.Dispatcher.Invoke(new VoidDelegate(MarkRead),null);

private void MarkRead()

ListViewItem lvi = (ListViewItem)grid_OperationRecordsList.ItemContainerGenerator.ContainerFromIndex(0);
if (lvi != null)

lvi.FontWeight = FontWeights.Bold;

如何获取listview的item中的内容

解决方案:重写BaseAdapter,然后自行获取ListView中每行输入的EditText值.

大概算法:重写BaseAdapter.getView函数,用一个数组存储EditText中的值,根据position即数组下标,在getView
中动态更新EditText和动态获取EditText中的值.因为ListView中的item是复用的,如果不动态清空或动态获取EditText中
值,就会出现数据紊乱,或者没数据.那么在生成EditText的时候要监控其值的变化.存储下来.
使用方法:

private List<Map<String, Object>> mCheckItemList = new ArrayList<Map<String, Object>>();

mAdapter = new ListEditorAdapter(this, mCheckItemList);

m_lvListView.setAdapter(mAdapter);

直接改变mCheckItemList中的数据,然后调用mAdapter.notifyDataSetChanged();就可以更新ListView的数据

当然,直接从mCheckItemList也可以获得用户在EditText中输入的数据.比较方便

其他:

ListView list= (ListView)findViewById(R.id.list);//获得listview
for (int i = 0; i < list.getChildCount(); i++)
LinearLayout layout = (LinearLayout)list.getChildAt(i);// 获得子item的layout
EditText et = (EditText) layout.findViewById(R.id.et);// 从layout中获得控件,根据其id
// EditText et = (EditText) layout.getChildAt(1)//或者根据位置,在这我假设TextView在前,EditText在后

System.out.println("the text of "+i+"'s EditText:----------->"+et.getText());
参考技术A 在listView里添加数据应该使用了BaseAdapter的子类,也就是某类适配器
而在将ListView中的item的控件和数据相联系是由BaseAdapter中的getView()实现的
一些简单的例子里面不用重写此方法,而比较复杂的item布局就需要去继承BaseAdapter,
然后在getView()方法里去实现

以上是关于动态给listview的item添加样式?的主要内容,如果未能解决你的问题,请参考以下文章

C#如何向listview中的一列添加LIST集合中的OBJECT数据

listview添加长度不固定分割线

怎样在Listview中分组显示Item.并且可以折叠

android如何给listview添加动态加载数据

flutter listview item滚出屏幕不重置状态

C#怎么给listview添加滚动条