大家好,遇到一个向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内容:<?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>