ListView 每一项添加数目不等的android控件不成功,求帮忙看下。
大家好,遇到一个向ListView中的某一项的布局添加控件的问题。情况是程序运行没有效果,添加的View都没成功,请有这方面经验的帮忙看下啊,实在不明白了。运行效果如下:
我想写个ListView来显示shared.mNodeInfoList中的数据。因为每个节点传感器数目是不定的,所以我想
在ListView的每一项显示一个节点的信息(包含一个textView和一个用来添加Button的布局),然后把一个个数据做成一个个button加入到这个布局中去。但是holder.layoutOfSensors.addView(view);执行后,没有把view添加进去吗?为什么看不到添加的Button。
谁能帮忙看下?
ViewHolder如下:
private class ViewHolder{
public TextView title;
public RelativeLayout layoutOfSensors;
}
适配器如下:
/*ListView的布局适配器*/
private class MyAdapter extends BaseAdapter{
private LayoutInflater mInflater;
public MyAdapter(Context context){
this.mInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
//Log.i(TAG,"shared.mNodeInfoList.size()"+shared.mNodeInfoList.size());
return shared.mNodeInfoList.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder;
if(convertView ==null)
{
convertView = mInflater.inflate(R.layout.sensorsitem, null);
holder = new ViewHolder();
holder.title = (TextView)convertView.findViewById(R.id.ItemNodeTitle);
holder.layoutOfSensors = (RelativeLayout)findViewById(R.id.LayoutOfSensors);
convertView.setTag(holder);
}
else{
holder = (ViewHolder)convertView.getTag();
}
Log.i(TAG,"绑定节点编号"+position);
//绑定节点编号:
holder.title.setText("节点 "+shared.mNodeInfoList.get(position).getNodeNum()+"号");
holder.title.setTextSize(15);
//绑定节点传感器信息
List<SensorData> m_SensorDataList= shared.mNodeInfoList.get(position).getSensorDataList();
//创建布局
holder.layoutOfSensors = new RelativeLayout(getApplicationContext());
String strSensorData = "";
for (SensorData m_SensorData : m_SensorDataList)
{
//创建button
Button view = new Button(getApplicationContext());
strSensorData+=m_SensorData.getSensorTypeName()+":";
strSensorData+=m_SensorData.getSensorData()+";";
view.setText(strSensorData);
holder.layoutOfSensors.addView(view);
}
if(position == shared.currentSelectedBaseNum)
{
convertView.setBackgroundColor(0x22444444);
}
else
{
convertView.setBackgroundColor(Color.TRANSPARENT);
}
return convertView;
}
}
在background.xml中的ListView以sensorsitem.xml作为每一项的布局
background.xml内容:
<?xml version="1.0" encoding="utf-8" ?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/backgroundlayout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical">
<TextView
android:id="@+id/textViewOfBaseNum"
android:textColor="@drawable/blue"
android:layout_width = "wrap_content"
android:layout_height="wrap_content"
/>
<ListView
android:cacheColorHint="#00000000"
android:layout_below = "@+id/textViewOfBaseNum"
android:textColor="#ff435346"
android:id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:listSelector="#00000000"
android:drawSelectorOnTop="false"/>
</RelativeLayout>
sensorsitem.xml内容:
--------------------编程问答-------------------- 运行情况图片在这:。只有布局文件中已有的TextView和Button。 --------------------编程问答-------------------- 自己顶一个。接触android不久,希望已经把问题描述清楚了。 --------------------编程问答-------------------- 没有人吗?难道ListView里面每一项的布局只能事先定义好吗
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LayoutOfNode"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:focusable="false"
android:textColor="@drawable/blue"
android:id="@+id/ItemNodeTitle"
android:layout_height="wrap_content"
android:layout_width="fill_parent" />
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LayoutOfSensors"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/ItemNodeTitle"
android:background="@drawable/white">
<Button
android:id = "@+id/btnhello"
android:layout_width ="wrap_content"
android:layout_alignParentRight="true"
android:text = "sdf"
android:layout_height = "wrap_content">
</Button>
</RelativeLayout>
补充:移动开发 , Android