4

我正在使用带有列表标题的列表片段,并且需要在第一个列表项中添加一组列表。 类似以下的东西

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

我的自定义适配器的 getView 看起来像这样:

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;
  }

什么是最佳的解决方法,而不会丢失使用的标题视图

     myListView.addHeaderView(myHeaderView);
4

3 回答 3

2

在没有重大错误的情况下,Android 上的A ScrollViewin aScrollView是不可能的,谷歌表示不要这样做。您可以LinearLayout在列表项内部(将其orientation设置为vertical)并手动addView()将视图添加到 LinearLayout 中,该视图将以布局的设置方向显示。

于 2013-07-31T01:38:08.357 回答
1

我不确定我是否理解您要做什么,但是如果我理解正确...:

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

请不要使用这样的东西。

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

此外,您正在做的事情的替代方法是expandableListView

于 2013-07-30T23:07:59.327 回答
1

我通过使用以下代码找到了解决方法,将其放在这里:

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

myCustomAdapter.addListItem(new ListItemObject (item));
myCustomAdapter.addSublistItem(new SublistItemObject (item));

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

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 自定义您为子列表充气的布局

于 2013-08-08T05:11:18.470 回答