我想创建每周日历 View ,并且每个网格项目(每天)中可能有多个 Activity 。除此之外,我已经使用网格 View 创建了每周日历 View ,但是我想通过动态添加特定日期的 Activity (如果有的话)检查数据库。与图片相同。
下面是我的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;
}

}

在这里,我暂时尝试动态添加文本 View ,但是我想在此处将我的自定义activity_item布局填充并添加到网格单元中。

最佳答案

您是说要在“忙碌”空间正在占用的区域中添加多行吗?您是否希望它占用所需的空间,还是应该可滚动?

无论如何,看来您的方向正确。您使用linearLayout来容纳“忙碌”区域,对吗?因此,只需使用for循环,然后将其要显示的数据放入即可。

当然,由于gridView会回收项目,因此每次到达getView时都需要清空linearLayout,但它仍然可以正常工作。

如果您希望在for循环中使用layoutInflater,那么也可以:

 subRow = inflater.inflate(R.layout.sub_row, linearLayout, true);

关于android - 如何在android的gridview适配器的getView()内膨胀另一个布局?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17629542/

10-11 15:12