Q:

CustomBaseAdapter ошибка

У меня есть адаптер:
public class CustomListAdapter_Words extends BaseAdapter {
    private static String TAG = "myApplication";
    private static String MSG = "Adapter: ";

    private final Activity context;
    private final String[][] words_form_1;
    private final String[][] words_form_2;

    public CustomListAdapter_Words(Activity context, String[][] words_form_1, String[][] words_form_2) {
        this.context = context;
        this.words_form_1 = words_form_1;
        this.words_form_2 = words_form_2;
    }

    static class ViewHolder_form_1 {
        public TextView textView_1_form_1;
        public TextView textView_2_form_1;
        public TextView textView_3_form_1;
    }

    static class ViewHolder_form_2 {
        public TextView textView_1_form_2;
        public TextView textView_2_form_2;
        public TextView textView_3_form_2;
        public TextView textView_4_form_2;
        public TextView textView_5_form_2;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder_form_1 holder_1;
        ViewHolder_form_2 holder_2;

        View rowView_1 = convertView;
        View rowView_2 = convertView;

        if (rowView_1 == null) {
            LayoutInflater inflater = context.getLayoutInflater();
            rowView_1 = inflater.inflate(R.layout.row_words_form_1, null, true);

            holder_1 = new ViewHolder_form_1();

            holder_1.textView_1_form_1 = (TextView) rowView_1.findViewById(R.id.text_1);
            holder_1.textView_2_form_1 = (TextView) rowView_1.findViewById(R.id.text_2);
            holder_1.textView_3_form_1 = (TextView) rowView_1.findViewById(R.id.text_3);

            rowView_1.setTag(holder_1);
        } else {
            holder_1 = (ViewHolder_form_1) rowView_1.getTag();
        }

        if (rowView_2 == null) {
            LayoutInflater inflater = context.getLayoutInflater();
            rowView_2 = inflater.inflate(R.layout.row_words_form_2, null, true);

            holder_2 = new ViewHolder_form_2();

            holder_2.textView_1_form_2 = (TextView) rowView_2.findViewById(R.id.text_1);
            holder_2.textView_2_form_2 = (TextView) rowView_2.findViewById(R.id.text_2);
            holder_2.textView_3_form_2 = (TextView) rowView_2.findViewById(R.id.text_3);
            holder_2.textView_4_form_2 = (TextView) rowView_2.findViewById(R.id.text_4);
            holder_2.textView_5_form_2 = (TextView) rowView_2.findViewById(R.id.text_5);

            rowView_2.setTag(holder_2);
        } else {
            holder_2 = (ViewHolder_form_2) rowView_2.getTag();
        }

        if (position < words_form_1.length) {
            holder_1.textView_1_form_1.setText(words_form_1[position][0]);
            holder_1.textView_2_form_1.setText(words_form_1[position][1]);
            holder_1.textView_3_form_1.setText(words_form_1[position][2]);

            return rowView_1;
        } else {
            holder_2.textView_1_form_2.setText(words_form_1[position][0]);
            holder_2.textView_2_form_2.setText(words_form_1[position][1]);
            holder_2.textView_3_form_2.setText(words_form_1[position][2]);
            holder_2.textView_3_form_2.setText(words_form_1[position][3]);
            holder_2.textView_3_form_2.setText(words_form_1[position][4]);

            return rowView_2;
        }
    }

    @Override
    public int getCount() {
        return words_form_1.length;
    }

    @Override
    public Object getItem(int position) {
        String[][] item = new String[1][8];

        item[0][0] = words_form_1[position][0];
        item[0][1] = words_form_1[position][1];
        item[0][2] = words_form_1[position][2];

        item[0][3] = words_form_2[position][0];
        item[0][4] = words_form_2[position][1];
        item[0][5] = words_form_2[position][2];
        item[0][6] = words_form_2[position][3];
        item[0][7] = words_form_2[position][4];

        return item;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

Вот тут, при выполнении выскакивает ошибка:
if (rowView_2 == null) {
        LayoutInflater inflater = context.getLayoutInflater();
        rowView_2 = inflater.inflate(R.layout.row_words_form_2, null, true);

        holder_2 = new ViewHolder_form_2();

        holder_2.textView_1_form_2 = (TextView) rowView_2.findViewById(R.id.text_1);
        holder_2.textView_2_form_2 = (TextView) rowView_2.findViewById(R.id.text_2);
        holder_2.textView_3_form_2 = (TextView) rowView_2.findViewById(R.id.text_3);
        holder_2.textView_4_form_2 = (TextView) rowView_2.findViewById(R.id.text_4);
        holder_2.textView_5_form_2 = (TextView) rowView_2.findViewById(R.id.text_5);

        rowView_2.setTag(holder_2);
    } else {
        holder_2 = (ViewHolder_form_2) rowView_2.getTag();
    }

Ошибка появляется на строке (75 строка): holder_2 = (ViewHolder_form_2) rowView_2.getTag();
stacktrace ошибки:
11-03 15:50:26.301    4800-4800/?  E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang. ClassCastException: com.dugin_rostislav.dictionary. CustomListAdapter_Words$ViewHolder_form_1 cannot be cast to com.dugin_rostislav.dictionary. CustomListAdapter_Words$ViewHolder_form_2
            at com.dugin_rostislav.dictionary. CustomListAdapter_Words.getView(CustomListAdapter_Words.java:75)
            at android.widget. AbsListView.obtainView(AbsListView.java:2143)
            at android.widget. ListView.makeAndAddView(ListView.java:1831)
            at android.widget. ListView.fillDown(ListView.java:674)
            at android.widget. ListView.fillGap(ListView.java:638)
            at android.widget. AbsListView.trackMotionScroll(AbsListView.java:4930)
            at android.widget. AbsListView.scrollIfNeeded(AbsListView.java:3087)
            at android.widget. AbsListView.onTouchEvent(AbsListView.java:3361)
            at android.view. View.dispatchTouchEvent(View.java:7246)
            at android.view. ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2168)
            at android.view. ViewGroup.dispatchTouchEvent(ViewGroup.java:1903)
            at android.view. ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
            at android.view. ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
            at android.view. ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
            at android.view. ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
            at android.view. ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
            at android.view. ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
            at android.view. ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
            at android.view. ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
            at android.view. ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
            at android.view. ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
            at android.view. ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
            at android.view. ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
            at android.view. ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
            at android.view. ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
            at com.android.internal.policy.impl. PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1953)
            at com.android.internal.policy.impl. PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1405)
            at android.app. Activity.dispatchTouchEvent(Activity.java:2410)
            at com.android.internal.policy.impl. PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1901)
            at android.view. View.dispatchPointerEvent(View.java:7426)
            at android.view. ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3220)
            at android.view. ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3165)
            at android.view. ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4292)
            at android.view. ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4271)
            at android.view. ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4363)
            at android.view. InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:179)
            at android.view. InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method)
            at android.view. InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:171)
            at android.view. ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:4342)
            at android.view. ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:4382)
            at android.view. Choreographer$CallbackRecord.run(Choreographer.java:749)
            at android.view. Choreographer.doCallbacks(Choreographer.java:562)
            at android.view. Choreographer.doFrame(Choreographer.java:530)
            at android.view. Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
            at android.os. Handler.handleCallback(Handler.java:725)
            at android.os. Handler.dispatchMessage(Handler.java:92)
            at android.os. Looper.loop(Looper.java:137)
            at android.app. ActivityThread.main(ActivityThread.java:5041)
            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:793)
            at com.android.internal.os. ZygoteInit.main(ZygoteInit.java:560)
            at dalvik.system. NativeStart.main(Native Method)

Само приложение крашится, когда я пролистываю ListView с этим адаптером, при чем первые 45 элементов (больше не помещается на экран) загружаются без сбоев.  Ошибка происходит ТОЛЬКО при пролистывании.  В сам адаптер поступает два двумерных массива по 100 элементов. 
Что я делаю не так?  Из-за чего крашится приложение? 

С таким кодом:
   public class CustomListAdapter_Words extends BaseAdapter {
        private static String TAG = "myApplication";
        private static String MSG = "Adapter: ";

        private final Activity context;
        private final String[][] words_form_1;
        private final String[][] words_form_2;

        public CustomListAdapter_Words(Activity context, String[][] words_form_1, String[][] words_form_2) {
            this.context = context;
            this.words_form_1 = words_form_1;
            this.words_form_2 = words_form_2;
        }

        static class ViewHolder_form_1 {
            public TextView textView_1_form_1;
            public TextView textView_2_form_1;
            public TextView textView_3_form_1;
        }

        static class ViewHolder_form_2 {
            public TextView textView_1_form_2;
            public TextView textView_2_form_2;
            public TextView textView_3_form_2;
            public TextView textView_4_form_2;
            public TextView textView_5_form_2;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            if (position < words_form_1.length) {
                ViewHolder_form_1 holder_1;
                View rowView_1 = convertView;

                if (rowView_1 == null) {
                    LayoutInflater inflater = context.getLayoutInflater();
                    rowView_1 = inflater.inflate(R.layout.row_words_form_1, null, true);

                    holder_1 = new ViewHolder_form_1();

                    holder_1.textView_1_form_1 = (TextView) rowView_1.findViewById(R.id.text_1);
                    holder_1.textView_2_form_1 = (TextView) rowView_1.findViewById(R.id.text_2);
                    holder_1.textView_3_form_1 = (TextView) rowView_1.findViewById(R.id.text_3);

                    rowView_1.setTag(holder_1);
                } else {
                    holder_1 = (ViewHolder_form_1) rowView_1.getTag();
                }

                holder_1.textView_1_form_1.setText(words_form_1[position][0]);
                holder_1.textView_2_form_1.setText(words_form_1[position][1]);
                holder_1.textView_3_form_1.setText(words_form_1[position][2]);

                return rowView_1;
            } else {
                ViewHolder_form_2 holder_2;
                View rowView_2 = convertView;

                if (rowView_2 == null) {
                    LayoutInflater inflater = context.getLayoutInflater();
                    rowView_2 = inflater.inflate(R.layout.row_words_form_2, null, true);

                    holder_2 = new ViewHolder_form_2();

                    holder_2.textView_1_form_2 = (TextView) rowView_2.findViewById(R.id.text_1);
                    holder_2.textView_2_form_2 = (TextView) rowView_2.findViewById(R.id.text_2);
                    holder_2.textView_3_form_2 = (TextView) rowView_2.findViewById(R.id.text_3);
                    holder_2.textView_4_form_2 = (TextView) rowView_2.findViewById(R.id.text_4);
                    holder_2.textView_5_form_2 = (TextView) rowView_2.findViewById(R.id.text_5);

                    rowView_2.setTag(holder_2);
                } else { 
                    if(rowView_2.getTag() instanceof ViewHolder_form_2) {
                        holder_2 = (ViewHolder_form_2) rowView_2.getTag();
                    } else {
                        holder_2 = new ViewHolder_form_2();
                    }
                }

                holder_2.textView_1_form_2.setText(words_form_1[position][0]); //92 строка
                holder_2.textView_2_form_2.setText(words_form_1[position][1]);
                holder_2.textView_3_form_2.setText(words_form_1[position][2]);
                holder_2.textView_3_form_2.setText(words_form_1[position][3]);
                holder_2.textView_3_form_2.setText(words_form_1[position][4]);

                return rowView_2;
            }
        }

        @Override
        public int getCount() {
            return (words_form_1.length + words_form_2.length);
        }

        @Override
        public Object getItem(int position) {
            String[][] item = new String[1][8];

            item[0][0] = words_form_1[position][0];
            item[0][1] = words_form_1[position][1];
            item[0][2] = words_form_1[position][2];

            item[0][3] = words_form_2[position][0];
            item[0][4] = words_form_2[position][1];
            item[0][5] = words_form_2[position][2];
            item[0][6] = words_form_2[position][3];
            item[0][7] = words_form_2[position][4];

            return item;
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public int getItemViewType (int position) {
            return (position < words_form_1.length)?0:1;
        }

        @Override
        public int getViewTypeCount () {
            return 2;
        }
    }

Ошибка такая:
11-03 19:52:20.757    1540-1540/?  E/MessageQueue-JNI﹕ java.lang. ArrayIndexOutOfBoundsException: length=100; index=100
            at com.dugin_rostislav.dictionary. CustomListAdapter_Words.getView(CustomListAdapter_Words.java:92)
            at android.widget. AbsListView.obtainView(AbsListView.java:2159)
            at android.widget. ListView.makeAndAddView(ListView.java:1831)
            at android.widget. ListView.fillDown(ListView.java:674)
            at android.widget. ListView.fillGap(ListView.java:638)
            at android.widget. AbsListView.trackMotionScroll(AbsListView.java:4930)
            at android.widget. AbsListView.onGenericMotionEvent(AbsListView.java:3640)
            at android.view. View.dispatchGenericMotionEventInternal(View.java:7341)
            at android.view. View.dispatchGenericMotionEvent(View.java:7322)
            at android.view. ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1782)
            at android.view. ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1735)
            at android.view. View.dispatchGenericMotionEvent(View.java:7315)
            at android.view. ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1782)
            at android.view. ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1735)
            at android.view. View.dispatchGenericMotionEvent(View.java:7315)
            at android.view. ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1782)
            at android.view. ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1735)
            at android.view. View.dispatchGenericMotionEvent(View.java:7315)
            at android.view. ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1782)
            at android.view. ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1735)
            at android.view. View.dispatchGenericMotionEvent(View.java:7315)
            at android.view. ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1782)
            at android.view. ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1735)
            at android.view. View.dispatchGenericMotionEvent(View.java:7315)
            at android.view. ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1782)
            at android.view. ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1735)
            at android.view. View.dispatchGenericMotionEvent(View.java:7315)
            at android.view. ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1782)
            at android.view. ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1735)
            at android.view. View.dispatchGenericMotionEvent(View.java:7315)
            at com.android.internal.policy.impl. PhoneWindow$DecorView.superDispatchGenericMotionEvent(PhoneWindow.java:1961)
            at com.android.internal.policy.impl. PhoneWindow.superDispatchGenericMotionEvent(PhoneWindow.java:1415)
            at android.app. Activity.dispatchGenericMotionEvent(Activity.java:2446)
            at com.android.internal.policy.impl. PhoneWindow$DecorView.dispatchGenericMotionEvent(PhoneWindow.java:1915)
            at android.view. View.dispatchPointerEvent(View.java:7428)
            at android.view. ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3220)
            at android.view. ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3165)
            at android.view. ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4292)
            at android.view. ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4271)
            at android.view. ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4363)
            at android.view. InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:179)
            at android.os. MessageQueue.nativePollOnce(Native Method)
            at android.os. MessageQueue.next(MessageQueue.java:125)
            at android.os. Looper.loop(Looper.java:124)
            at android.app. ActivityThread.main(ActivityThread.java:5041)
            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:793)
            at com.android.internal.os. ZygoteInit.main(ZygoteInit.java:560)
            at dalvik.system. NativeStart.main(Native Method)
11-03 19:52:20.773    1540-1540/?  E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang. ArrayIndexOutOfBoundsException: length=100; index=100
            at com.dugin_rostislav.dictionary. CustomListAdapter_Words.getView(CustomListAdapter_Words.java:92)
            at android.widget. AbsListView.obtainView(AbsListView.java:2159)
            at android.widget. ListView.makeAndAddView(ListView.java:1831)
            at android.widget. ListView.fillDown(ListView.java:674)
            at android.widget. ListView.fillGap(ListView.java:638)
            at android.widget. AbsListView.trackMotionScroll(AbsListView.java:4930)
            at android.widget. AbsListView.onGenericMotionEvent(AbsListView.java:3640)
            at android.view. View.dispatchGenericMotionEventInternal(View.java:7341)
            at android.view. View.dispatchGenericMotionEvent(View.java:7322)
            at android.view. ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1782)
            at android.view. ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1735)
            at android.view. View.dispatchGenericMotionEvent(View.java:7315)
            at android.view. ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1782)
            at android.view. ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1735)
            at android.view. View.dispatchGenericMotionEvent(View.java:7315)
            at android.view. ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1782)
            at android.view. ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1735)
            at android.view. View.dispatchGenericMotionEvent(View.java:7315)
            at android.view. ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1782)
            at android.view. ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1735)
            at android.view. View.dispatchGenericMotionEvent(View.java:7315)
            at android.view. ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1782)
            at android.view. ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1735)
            at android.view. View.dispatchGenericMotionEvent(View.java:7315)
            at android.view. ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1782)
            at android.view. ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1735)
            at android.view. View.dispatchGenericMotionEvent(View.java:7315)
            at android.view. ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1782)
            at android.view. ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1735)
            at android.view. View.dispatchGenericMotionEvent(View.java:7315)
            at com.android.internal.policy.impl. PhoneWindow$DecorView.superDispatchGenericMotionEvent(PhoneWindow.java:1961)
            at com.android.internal.policy.impl. PhoneWindow.superDispatchGenericMotionEvent(PhoneWindow.java:1415)
            at android.app. Activity.dispatchGenericMotionEvent(Activity.java:2446)
            at com.android.internal.policy.impl. PhoneWindow$DecorView.dispatchGenericMotionEvent(PhoneWindow.java:1915)
            at android.view. View.dispatchPointerEvent(View.java:7428)
            at android.view. ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3220)
            at android.view. ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3165)
            at android.view. ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4292)
            at android.view. ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4271)
            at android.view. ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4363)
            at android.view. InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:179)
            at android.os. MessageQueue.nativePollOnce(Native Method)
            at android.os. MessageQueue.next(MessageQueue.java:125)
            at android.os. Looper.loop(Looper.java:124)
            at android.app. ActivityThread.main(ActivityThread.java:5041)
            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:793)
            at com.android.internal.os. ZygoteInit.main(ZygoteInit.java:560)
            at dalvik.system. NativeStart.main(Native Method)

A:

Во первых - существует конвенции по написанию кода.  Java Convention и Android-разработчика, их настоятельно рекомендуется придерживаться, в частности при назначении имен.  Так, имя переменной должно быть записано в LowCamaelCase стиле.  Быть кратким, но информативным. 
Во вторых - у вас очевидное непонимание того, что вы делаете.  Вам нужно уделить много больше внимания теории, затем уже пытаться реализовать что то на практике. 
По коду:
Если вы решили использовать метод getItemViewType(), то его следует не только переопределить, но использовать по прямому назначению - для определения какой тип айтема требуется в текущей позиции. 
Паттерн ViewHolder всего лишь хранит ссылки на виджеты, не стоит усложнять код, создавая множество этих холдеров и тем более строить на них бизнес-логику - паттерн для этого не предназначен.  Более того, даже в моем примере класс ViewHolder избыточен, здесь достаточно определить пять полей для TextView - первый тип айтема будет использовать только первые три, второй тип - все пять.  Переписывать еще и это мне было решительно лень. 
Что возвращает ваш метод getItem() мне осилить не удалось, будем надеятся это именно то, что вам нужно получать от этого метода. 
Вот как примерно должен выглядеть код адаптера.  Естественно, я не буду создавать окружение, чтобы проверить его работоспособность, но , надеюсь, вы учтете различия в коде и дальше сможете действовать самостоятельно. 
public class WordsAdapter extends BaseAdapter {

    private final String TAG = "myApplication";
    private final String MSG = "Adapter: ";
    private final int FIRST_WORDS = 0;
    private final int SECOND_WORDS = 1;
    private final int FIRST_ARRAY_LENGTH;

    private final Activity mContext;
    private final String[][] mWordsForm1;
    private final String[][] mWordsForm2;
    private LayoutInflater mInflater;

    public WordsAdapter(Activity context, String[][] wordsForm1, String[][] wordsForm2) {

        mContext = context;
        mWordsForm1 = wordsForm1;
        mWordsForm2 = wordsForm2;
        mInflater = context.getLayoutInflater();
        FIRST_ARRAY_LENGTH = mWordsForm1.length;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        ViewHolder holder;
        int type = getItemViewType(position);

        if (convertView == null) {
            holder = new ViewHolder();
            switch (type) {
                case FIRST_WORDS:
                    convertView = mInflater.inflate(R.layout.row_words_form_1, null, true);

                    holder.textView1Form1 = (TextView) convertView.findViewById(R.id.text_1);
                    holder.textView2Form1 = (TextView) convertView.findViewById(R.id.text_2);
                    holder.textView3Form1 = (TextView) convertView.findViewById(R.id.text_3);
                    break;
                case SECOND_WORDS:
                    convertView = mInflater.inflate(R.layout.row_words_form_2, null, true);

                    holder.textView1Form2 = (TextView) convertView.findViewById(R.id.text_1);
                    holder.textView2Form2 = (TextView) convertView.findViewById(R.id.text_2);
                    holder.textView3Form2 = (TextView) convertView.findViewById(R.id.text_3);
                    holder.textView4Form2 = (TextView) convertView.findViewById(R.id.text_4);
                    holder.textView5Form2 = (TextView) convertView.findViewById(R.id.text_5);
                    break;
            }
            convertView.setTag(holder);
        }
        else {
          holder = (ViewHolder) convertView.getTag();
        }

        switch (type){
            case FIRST_WORDS:
                holder.textView1Form1.setText(mWordsForm1[position][0]);
                holder.textView2Form1.setText(mWordsForm1[position][1]);
                holder.textView3Form1.setText(mWordsForm1[position][2]);
                break;
            case SECOND_WORDS:
                holder.textView1Form2.setText(mWordsForm2[position - FIRST_ARRAY_LENGTH][0]);
                holder.textView2Form2.setText(mWordsForm2[position - FIRST_ARRAY_LENGTH][1]);
                holder.textView3Form2.setText(mWordsForm2[position - FIRST_ARRAY_LENGTH][2]);
                holder.textView3Form2.setText(mWordsForm2[position - FIRST_ARRAY_LENGTH ][3]);
                holder.textView3Form2.setText(mWordsForm2[position - FIRST_ARRAY_LENGTH][4]);
                break;
        }
        return convertView;
    }

    @Override
    public int getCount() {
        return (mWordsForm1.length + mWordsForm2.length);
    }

    @Override
    public int getItemViewType (int position) {
        return (position < mWordsForm1.length) ?  FIRST_WORDS:SECOND_WORDS;
    }

    @Override
    public int getViewTypeCount () {
        return 2;
    }

    @Override
    public Object getItem(int position) {
        String[][] item = new String[1][8];

        item[0][0] = mWordsForm1[position][0];
        item[0][1] = mWordsForm1[position][1];
        item[0][2] = mWordsForm1[position][2];

        item[0][3] = mWordsForm2[position][0];
        item[0][4] = mWordsForm2[position][1];
        item[0][5] = mWordsForm2[position][2];
        item[0][6] = mWordsForm2[position][3];
        item[0][7] = mWordsForm2[position][4];

        return item;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    static class ViewHolder {
        public TextView textView1Form1;
        public TextView textView2Form1;
        public TextView textView3Form1;
        public TextView textView1Form2;
        public TextView textView2Form2;
        public TextView textView3Form2;
        public TextView textView4Form2;
        public TextView textView5Form2;
    }

}

