I have been trying to make a table that has two static columns on the left and right (so they are visible at all times). The left layout contains labels and the right contains totals. The scroll view contains all of the main contents. There could be a total of 232 textview all the way down to 24. I read that GridView is optimal for memory, but not for creating a variable amount of columns and rows, will not scroll horizontally, and will wrap its own content to fit a width...I need new columns to just keep adding width. Is the gridview capable of being used in this way?
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="counter.prebuild.CreateNewCourseCard">
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/left"
android:id="@+id/cardLeft"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/right"
android:id="@+id/cardRight"
android:layout_alignParentBottom="true"
android:layout_toRightOf="@+id/space2" />
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/minus"
android:id="@+id/cardMinus"
android:layout_alignParentBottom="true"
android:layout_toLeftOf="@+id/cardSelectNum" />
<TextView
android:layout_width="70dp"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="@string/score_num_tile"
android:id="@+id/cardSelectNum"
android:gravity="center_vertical|center_horizontal"
android:layout_centerHorizontal="true"
android:layout_alignTop="@+id/cardMinus"
android:layout_alignParentBottom="true" />
<Space
android:layout_width="35dp"
android:layout_height="20dp"
android:id="@+id/space4"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/up"
android:id="@+id/cardUp"
android:layout_alignParentBottom="true"
android:layout_alignRight="@+id/space4"
android:layout_alignEnd="@+id/space4" />
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/down"
android:id="@+id/cardDown"
android:layout_alignParentBottom="true"
android:layout_toLeftOf="@+id/space5" />
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/plus"
android:id="@+id/cardPlus"
android:layout_alignParentBottom="true"
android:layout_toRightOf="@+id/cardSelectNum" />
<Space
android:layout_width="70dp"
android:layout_height="20dp"
android:id="@+id/space3"
android:layout_alignParentBottom="true"
android:layout_toLeftOf="@+id/cardDown" />
<Space
android:layout_width="25dp"
android:layout_height="30dp"
android:id="@+id/space5"
android:layout_alignParentBottom="true"
android:layout_toLeftOf="@+id/cardUp" />
<Space
android:layout_width="70dp"
android:layout_height="20dp"
android:id="@+id/space6"
android:layout_alignParentBottom="true"
android:layout_toRightOf="@+id/cardRight" />
<Space
android:layout_width="25dp"
android:layout_height="30dp"
android:id="@+id/space2"
android:layout_alignParentBottom="true"
android:layout_toRightOf="@+id/cardLeft" />
<View
android:layout_width="fill_parent"
android:layout_height="2dp"
android:id="@+id/imageView"
android:contentDescription="@string/blue_bar"
android:layout_marginBottom="2dp"
android:layout_above="@+id/cardSelectNum"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:background="#ff3463ff" />
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_above="@+id/imageView"
android:id="@+id/cardLeftLayout"
android:paddingRight="2dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="LeftLayout"
android:id="@+id/leftLayout" />
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_above="@+id/imageView"
android:id="@+id/cardRightLayout"
android:paddingLeft="2dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="RightLayout"
android:id="@+id/rightlayout" />
</LinearLayout>
<HorizontalScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/cardCenterLayout"
android:layout_alignTop="@+id/cardLeftLayout"
android:layout_above="@+id/imageView"
android:layout_toLeftOf="@+id/cardRightLayout"
android:layout_toRightOf="@+id/cardLeftLayout">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="ScrollView"
android:id="@+id/scrollViewText" />
</HorizontalScrollView>
I just used the two-way-gridview and in the adapter set up a public function with this.notifyDataSetChanged()
. It will work in a way that any other listview type view works except that it will not scroll horizontally without an external library.
As for the static left and right columns, I just set up a separate layout with views that are similar to the ones that I am displaying in the gridview.