jess-anders / two-way-gridview

An Android GridView that can be configured to scroll horizontally or vertically
650 stars 261 forks source link

Create simple vertical textView with horizontal scroll #37

Closed ghost closed 8 years ago

ghost commented 8 years ago

Hi My ultimate goal is vertical textView start from top-left ... bottom-left then start new column and go down until it ends. And user can horizontally scroll from left to right to see the last textView. Here is the example. 1 5 9 2 6 10 3 7 11 4 8 12 Then user can click on the number to proceed the choice. The example provided in the repository is too advanced. Could you please simplify or give me hint to do my problem?

MainActivity.java


package com.jaikra.sarit.wecare;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;

import TwoWayGridView.TwoWayGridView;

public class MainActivity extends AppCompatActivity {
    static final String[] numbers = new String[] {
            "A", "B", "C", "D", "E",
            "F", "G", "H", "I", "J",
            "K", "L", "M", "N", "O",
            "P", "Q", "R", "S", "T",
            "U", "V", "W", "X", "Y", "Z"};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TwoWayGridView gridview = (TwoWayGridView) findViewById(R.id.gridview);
        gridview = (TwoWayGridView) findViewById(R.id.gridview);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, numbers);
        gridview.setAdapter(adapter);

    }

}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context="com.jaikra.sarit.wecare.MainActivity">

    <include layout="@layout/content_main" />

</android.support.design.widget.CoordinatorLayout>

content_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.jaikra.sarit.wecare.MainActivity"
    tools:showIn="@layout/activity_main">

    <com.jess.ui.TwoWayGridView
        android:background="#E8E8E8"
        android:id="@+id/gridview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        app:cacheColorHint="#E8E8E8"
        app:columnWidth="80dp"
        app:rowHeight="80dp"
        app:numColumns="auto_fit"
        app:numRows="auto_fit"
        app:verticalSpacing="16dp"
        app:horizontalSpacing="16dp"
        app:stretchMode="spacingWidthUniform"
        app:scrollDirectionPortrait="vertical"
        app:scrollDirectionLandscape="horizontal"
        app:gravity="center"/>
</LinearLayout>

Error:

E/AndroidRuntime: FATAL EXCEPTION: main
                                                 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.jaikra.sarit.wecare/com.jaikra.sarit.wecare.MainActivity}: android.view.InflateException: Binary XML file line #15: Error inflating class com.jess.ui.TwoWayGridView
                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
                                                     at android.app.ActivityThread.access$600(ActivityThread.java:123)
                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
                                                     at android.os.Handler.dispatchMessage(Handler.java:99)
                                                     at android.os.Looper.loop(Looper.java:137)
                                                     at android.app.ActivityThread.main(ActivityThread.java:4424)
                                                     at java.lang.reflect.Method.invokeNative(Native Method)
                                                     at java.lang.reflect.Method.invoke(Method.java:511)
                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
                                                     at dalvik.system.NativeStart.main(Native Method)
                                                  Caused by: android.view.InflateException: Binary XML file line #15: Error inflating class com.jess.ui.TwoWayGridView
                                                     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:691)
                                                     at android.view.LayoutInflater.rInflate(LayoutInflater.java:739)
                                                     at android.view.LayoutInflater.parseInclude(LayoutInflater.java:823)
                                                     at android.view.LayoutInflater.rInflate(LayoutInflater.java:729)
                                                     at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
                                                     at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
                                                     at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
                                                     at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:256)
                                                     at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:109)
                                                     at com.jaikra.sarit.wecare.MainActivity.onCreate(MainActivity.java:25)
                                                     at android.app.Activity.performCreate(Activity.java:4465)
                                                     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
                                                     at android.app.ActivityThread.access$600(ActivityThread.java:123) 
                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
                                                     at android.os.Handler.dispatchMessage(Handler.java:99) 
                                                     at android.os.Looper.loop(Looper.java:137) 
                                                     at android.app.ActivityThread.main(ActivityThread.java:4424) 
                                                     at java.lang.reflect.Method.invokeNative(Native Method) 
                                                     at java.lang.reflect.Method.invoke(Method.java:511) 
                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
                                                     at dalvik.system.NativeStart.main(Native Method) 
                                                  Caused by: java.lang.ClassNotFoundException: com.jess.ui.TwoWayGridView
                                                     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
                                                     at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
                                                     at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
                                                     at android.view.LayoutInflater.createView(LayoutInflater.java:552)
                                                     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680)
                                                     at android.view.LayoutInflater.rInflate(LayoutInflater.java:739) 
                                                     at android.view.LayoutInflater.parseInclude(LayoutInflater.java:823) 
                                                     at android.view.LayoutInflater.rInflate(LayoutInflater.java:729) 
                                                     at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
                                                     at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
                                                     at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
                                                     at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:256) 
                                                     at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:109) 
                                                     at com.jaikra.sarit.wecare.MainActivity.onCreate(MainActivity.java:25) 
                                                     at android.app.Activity.performCreate(Activity.java:4465) 
                                                     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 
                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
                                                     at android.app.ActivityThread.access$600(ActivityThread.java:123) 
                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
                                                     at android.os.Handler.dispatchMessage(Handler.java:99) 
                                                     at android.os.Looper.loop(Looper.java:137) 
                                                     at android.app.ActivityThread.main(ActivityThread.java:4424) 
                                                     at java.lang.reflect.Method.invokeNative(Native Method) 
                                                     at java.lang.reflect.Method.invoke(Method.java:511) 
                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
                                                     at dalvik.system.NativeStart.main(Native Method) 
ghost commented 8 years ago

Very sorry for showing my beginner skill here. I don't know how to utilize xml properly. I have to put all class in the com.jaikra.sarit.wecare directory then IDE will help me fill the name while I am typing the xml. I replace com.jess.ui.TwoWayGridView by com.jaikra.sarit.wecare.TwoWayGridView.TwoWayGridView.