如何在android中的gridview适配器的getView()内膨胀另一个布局?

Nar*_*dra 8 android android-layout android-gridview layout-inflater

Weekly_Calendar_View 我想创建每周日历视图并在每个网格项目内(每天)可能有几个活动.但是我已经使用网格视图创建了每周日历视图但我想通过动态创建特定日期的活动检查db.和图像一样.下面是我的getView()代码..

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View row = convertView;
    if (convertView == null) {
        LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        row = inflater.inflate(R.layout.calendar_week_gridcell, parent, false);
    }

    txtRowTitle = (TextView) row.findViewById(R.id.txtDayTitle);

    LinearLayout root = (LinearLayout) row.findViewById(R.id.linear_root);

    String dayTitle = list.get(position);
    txtRowTitle.setText(dayTitle);
    if (position == currentWeekDay - 1)
        root.setBackgroundResource(R.drawable.calheader);
    if (!activityMap.isEmpty() && activityMap.containsKey(activityDateList.get(position))) {
        TextView item = new TextView(mContext);
        item.setText(activityMap.get(activityDateList.get(position)));
        item.setBackgroundColor(Color.GREEN);
        root.addView(item);
    }

    return row;
}
Run Code Online (Sandbox Code Playgroud)

}

这里我暂时尝试动态添加文本视图,但我想在这里充气我的自定义activity_item布局并将其添加到网格单元格.

and*_*per 1

您的意思是您希望在现在被“繁忙”空间占用的区域中添加多行吗?您希望它占用所需的空间,还是应该可以滚动?

不管怎样,看来你的方向是正确的。您使用 LinearLayout 来容纳“繁忙”区域,对吗?所以只需使用 for 循环并放入您想要显示的数据即可。

当然,因为 gridView 会回收项目,所以每次到达 getView 时都需要清空 LinearLayout,但它应该仍然可以工作。

如果你想在for循环中使用layoutInflater,那也是可能的:

 subRow = inflater.inflate(R.layout.sub_row, linearLayout, true);
Run Code Online (Sandbox Code Playgroud)