在listitem中添加列表视图

时间:2013-07-30 22:20:02

标签: android android-fragments listadapter

我正在使用带有列表标题的列表片段,需要在第一个列表项中添加一组列表。 something like following

我正在使用自定义列表适配器来加载列表项。现在对于列表项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);

3 个答案:

答案 0 :(得分:2)

在没有重大错误的Android上,ScrollView中的ScrollView是不可能的,Google表示不这样做。您可以在列表项中加LinearLayoutorientation设置为vertical)并手动使用addView()将视图添加到LinearLayout中,该视图将与布局的设定方向。

答案 1 :(得分:1)

我不确定我明白你要做什么,但如果我理解正确......:

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

请不要使用这样的东西。

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

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

答案 2 :(得分: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

自定义为子列表充气的布局