首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在listitem中添加列表视图

在listitem中添加列表视图
EN

Stack Overflow用户
提问于 2013-07-31 06:20:02
回答 3查看 13.5K关注 0票数 4

我正在使用带有列表头的列表片段,并且需要在第一个列表项中添加一组列表。

我正在使用自定义列表适配器加载列表项。现在,对于列表项1,我需要在列表适配器中的列表项顶部添加一个子视图。我该怎么做呢?我不确定可扩展列表项是否是我想要在这里使用的。

我的自定义适配器的getView如下所示:

代码语言:javascript
复制
public View getView(int position, View convertView, ViewGroup parent) {
   ViewHolder holder = null;
   int type = getItemViewType(position);

   if (convertView == null) {
   holder = new ViewHolder();

   switch (type) {

    case TYPE_LIST_ITEM_1:
        convertView = mInflater.inflate(R.id.list_item_one, null);
        /* add code */                          
        /* add another list adapter? */
        break;

    case TYPE_LIST_ITEM_OTHERS:
        convertView = mInflater.inflate(R.layout.list_item_other, null);
        /* add code for below list */
        break;

    }
    convertView.setTag(holder);
   } 
   else {
    holder = (ViewHolder)convertView.getTag();
   }

   return convertView;
  }

在不丢失标题视图的情况下,最好的方法是什么

代码语言:javascript
复制
     myListView.addHeaderView(myHeaderView);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-08 13:11:18

我想出了一个解决办法,使用以下代码,将其放在这里:

当使用基本适配器更新自定义列表适配器(例如: myCustomListAdapter)时,您可以定义不同的方法来添加列表项和子列表项:

代码语言:javascript
复制
myCustomAdapter.addListItem(new ListItemObject (item));
myCustomAdapter.addSublistItem(new SublistItemObject (item));

然后使用getView来膨胀不同的布局,并使用您的自定义对象来确定您想要对它们做什么以及如何显示它们。而列表适配器标识为列表视图的所有部分。

代码语言:javascript
复制
public View getView(int position, View convertView, ViewGroup parent) {

    ViewHolder holder;

    int type = getItemViewType(position);
    final SuperListItemObject item = (SuperListItemObject) getItem(position);


    if (convertView == null) {
        holder = new ViewHolder();

        switch (type) {

        case TYPE_LIST_ITEM:
            convertView = mInflater.inflate(R.layout.list_item, null);
            holder.text=(TextView) convertView.findViewById(R.id.textview); 
            break;

        case TYPE_SUBLIST_ITEM:
            convertView = mInflater.inflate(R.layout.sublist_item, null);
            holder.subtext=(TextView) convertView.findViewById(R.id.text);  
            break;

        }
        convertView.setTag(holder);
    } 
    else {
        holder = (ViewHolder)convertView.getTag();
    }

    if(item instanceof ListItemObject){
        holder.text.setText("this is list item");
        holder.text.setTextColor(Color.RED);
                    //your code for list item
    }

    if(item instanceof SublistItemObject){
        holder.subtext.setText("this is sublist item");
        holder.subtext.setTextColor(Color.BLUE);
                    //your code for sublist item
    }
    return convertView;
}

在这里,可以使用layout_marginLeft=20dp和layout_marginRight=20dp自定义您为子列表膨胀的布局

票数 1
EN

Stack Overflow用户

发布于 2013-07-31 09:38:08

在安卓系统上,如果没有重大漏洞,ScrollView中的ScrollView是不可能的,谷歌表示不会这么做。您可以在列表项中包含一个LinearLayout (其orientation设置为vertical),并手动使用addView()将视图添加到将以布局的设置方向显示的LinearLayout中。

票数 2
EN

Stack Overflow用户

发布于 2013-07-31 07:07:59

我不能肯定我明白你想做什么,但如果我没弄错的话

谷歌强烈不推荐在listView中使用listView,因为它会给用户带来奇怪的滚动和不可预测的UI。

请不要用这样的东西。

但是,如果里面只有几个项目,请使用没有任何滚动的普通容器。

此外,您正在做的事情的另一种选择是expandableListView

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17958472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档