AddView()到Expandable ListView

时间:2015-05-21 15:41:36

标签: android listview xamarin expandablelistview

我有一个可扩展的ListView。我需要动态地将View(相对布局与textview)集成到ListView中 我有一个axml文件(它就像我动态视图的模板) 我这样做

id

之后,我试图进入可扩展列表(称为" _List"):

View _view = LayoutInflater.Inflate(Resource.Layout.DynamicControl,null);  

比我使用适配器,放入ListView数据:

_List.AddView(_view,0); //where 0 is position(index)

IDE给我例外:

  

java.lang.UnsupportedOperationException:addView(View)不是   AdapterView支持

我读到,_List.SetAdapter(new _Adapter(this, List<MyClass>, _List)); 没有集成在listView视图中,我需要使用(总是)适配器。这是真的吗?(可能存在解决方法或者我可以覆盖我的构造函数(Of Custom _Adapter)并给出其他参数,如Context和Views?)。
那么,为什么AddView()正常工作?

PS对不起我的工程师。谢谢!

UPD:

http://i.stack.imgur.com/5LhLA.png

AddFooterView / AddHeaderView

我该怎么办?

3 个答案:

答案 0 :(得分:0)

  AdapterView中不支持addView()。   块引用

这意味着AdapterView - &gt; ListView,ExpandableListView,ViewPager等等。

我不知道该怎么做。 向我展示样机,或任何UI的图片。那我可以帮你。

答案 1 :(得分:0)

是的,我们只能在适配器的帮助下将视图添加到列表视图。要添加自定义视图,我们需要通过扩展其中一个适配器类来定义我们自己的适配器,如 BaseAdapter ,< strong> CursorAdapter 等

例如:我们有

public class ContactListAdapter extends BaseAdapter{
    private List<String> name;
    private LayoutInflater layoutInflater;

    public ContactListAdapter(Activity activity) {
        layoutInflater = activity.getLayoutInflater();
        name = new ArrayList<String>();
    }

    public void addMessage(String message) {
        name.add(message);
        notifyDataSetChanged();
    }
    public void removeMessage(String message) {
        name.remove(message);
        notifyDataSetChanged();
    }
    @Override
    public int getCount() {
        return name.size();
    }

    @Override
    public Object getItem(int i) {
        return name.get(i);
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public int getViewTypeCount() {
        return 2;
    }

    @Override
    public int getItemViewType(int i) {
         return 0;
    }

    @Override
    public View getView(int i, View convertView, ViewGroup viewGroup) {
        int direction = getItemViewType(i);


                 if (convertView == null) {

            //LayoutInflater inflater = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = layoutInflater.inflate(R.layout.contact_list, viewGroup, false);
        }

        String message = name.get(i);



        final TextView txtMessage = (TextView) convertView.findViewById(R.id.contactName);
        txtMessage.setText(message.toString());

        ImageView imageView=(ImageView)convertView.findViewById(R.id.contactImage);

        return convertView;
    }
}

此适配器添加具有一个图像和一个TextView的联系人列表视图。 添加页眉和页脚视图只是为了定义页眉和页脚部分是固定的,没有任何内容与列表视图,所有相同类型的视图页眉和页脚可以是不同的。

答案 2 :(得分:0)

所以解决方法是(对我来说),生成帖子条件并放置不同的布局:

var inflater = _context.GetSystemService(Context.LayoutInflaterService) as  LayoutInflater;

  if(!SpecificLayout)
    {
      view = inflater.Inflate(Resource.Layout.SpecificLayout, null);
    }
  else
    {
      view = inflater.Inflate(Resource.Layout.AnotherLayout, null);
    }