在不使用GridView的情况下在Android中创建类似GridView的布局

时间:2014-07-10 17:17:23

标签: android android-gridview android-tablelayout

因此我尝试在Android中创建GridView样式布局而不实际使用自定义Gridview适配器,因为我不想让它滚动。我尝试过关闭滚动,但由于我在垂直的LinearLayout中添加其他元素,因此它会破坏我的布局。

我的下一个实验是使用TableLayout然后只是将膨胀的布局添加为表格单元格,但我也遇到了问题。这是一个我正在运行的测试,用于简要的概念证明:

TableRow trackingActivityRow = new TableRow(getActivity());
        for(int j = 0; j < trackingActivities.size(); j ++) {

            TrackingActivity trackingActivity = trackingActivities.get(j);
            View trackingActivityCell = getActivity().getLayoutInflater()
                    .inflate(R.layout.table_cell_tracking_activity, trackingActivityRow, true);
            TextView txtDescription = (TextView)trackingActivityCell.findViewById(R.id.txtDescription);
            txtDescription.setText(trackingActivity.getDescription());



        }
        tableLayout.addView(trackingActivityRow);

它似乎正确地创建了单元格的数量,但它并不想像它应该那样设置文本。此外,在为每4个TrackingActivities创建一个新行时,我遇到了逻辑问题。 如果有人有任何意见,将不胜感激。

/ 更新 / 这是问题的图解。与&#34; Walk&#34;在它正确显示,但其他单元格只显示文本视图中应该已被替换的占位符文本。

enter image description here

1 个答案:

答案 0 :(得分:0)

我基于带有listadapter的tablelayout创建了一个自定义的GridView。

扩展TableLayout中的setAdapterMethod的简化版本:

    int itemPos = -1;
    int numRows = (int) Math.ceil((double) adapter.getCount() / (double) mNumColumns);
    for (int yPos = 0; yPos < numRows; yPos++) {
        //Create new row
        TableRow tableRow = new TableRow(this.getContext());

        for (int xPos = 0; xPos < mNumColumns; xPos++) {
            itemPos++;
            View itemView = adapter.getView(itemPos, null, tableRow);
            tableRow.addView(itemView);
        }
        this.addView(tableRow, new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.MATCH_PARENT));
    }