Подтвердить что ты не робот

TableLayout с RecyclerView

Существует только два менеджера компоновки для RecyclerView: LinearLayoutManager и GridLayoutManager. Есть ли способ использовать TableLayout в качестве менеджера макетов с RecyclerView? Любое предложение?

EDIT: Интересно, есть ли какое-либо решение без написания диспетчера компоновки с нуля. TableLayout для меня достаточно, просто хочу добавить функцию рециркуляции для проблем с производительностью при обработке большого количества данных.

И создание таблицы, выглядящей listview, не решает мою проблему, я думаю, потому что моя таблица очень динамична, я не знаю даже имен столбцов, клиент решает все детали таблицы. Таким образом, ячейки будут настраиваться, ширина столбцов должна быть автоматически изменена, зависит от длины содержимого. Я не думаю, что список может справиться с этим.

Заранее благодарим за помощь.

4b9b3361

Ответ 2

Посмотрите на эту библиотеку. Кажется, это именно то, что вам нужно. Он также имеет систему рециркуляции.

demo.gif

Ответ 3

Создайте собственную строку с функцией linearlayout и добавьте эту строку в recyclerView Adapter, это только решение для создания таблицы типа Structure в RecyclerView.

Ответ 4

Вы можете использовать Android RecyclerView с учебником примера GridLayoutManager GridView

http://www.android-examples.com/android-recyclerview-with-gridview-gridlayoutmanager/

Android RecyclerView с учебником примера GridLayoutManager GridView.

Код для файла MainActivity.java.

package com.android_examples.recyclerviewgridview_android_examplescom;
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;

public class MainActivity extends AppCompatActivity {

    RecyclerView recyclerView;

    Context context;

    RecyclerView.Adapter recyclerView_Adapter;

    RecyclerView.LayoutManager recyclerViewLayoutManager;

    String[] numbers = {
            "one",
            "two",
            "three",
            "four",
            "five",
            "six",
            "seven",
            "eight",
            "nine",
            "ten",
            "eleven",

    };


    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        context = getApplicationContext();

        recyclerView = (RecyclerView) findViewById(R.id.recycler_view1);

        //Change 2 to your choice because here 2 is the number of Grid layout Columns in each row.
        recyclerViewLayoutManager = new GridLayoutManager(context, 2);

        recyclerView.setLayoutManager(recyclerViewLayoutManager);

        recyclerView_Adapter = new RecyclerViewAdapter(context,numbers);

        recyclerView.setAdapter(recyclerView_Adapter);

    }
}

Код для файла макета activity_main.xml.

<?xml version="1.0" encoding="utf-8"?>
<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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.android_examples.recyclerviewgridview_android_examplescom.MainActivity"
    android:id="@+id/relativelayout">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_view1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scrollbars="vertical"
        >
    </android.support.v7.widget.RecyclerView>

</RelativeLayout>

Код для файла RecyclerViewAdapter.java.

package com.android_examples.recyclerviewgridview_android_examplescom;
import android.content.Context;
import android.graphics.Color;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;

/**
 * Created by JUNED on 6/16/2016.
 */
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder>{

    String[] values;
    Context context1;

    public RecyclerViewAdapter(Context context2,String[] values2){

        values = values2;

        context1 = context2;
    }

    public static class ViewHolder extends RecyclerView.ViewHolder{

        public TextView textView;

        public ViewHolder(View v){

            super(v);

            textView = (TextView) v.findViewById(R.id.textview1);

        }
    }

    @Override
    public RecyclerViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType){

        View view1 = LayoutInflater.from(context1).inflate(R.layout.recycler_view_items,parent,false);

        ViewHolder viewHolder1 = new ViewHolder(view1);

        return viewHolder1;
    }

    @Override
    public void onBindViewHolder(ViewHolder Vholder, int position){

        Vholder.textView.setText(values[position]);

        Vholder.textView.setBackgroundColor(Color.CYAN);

        Vholder.textView.setTextColor(Color.BLUE);

    }

    @Override
    public int getItemCount(){

        return values.length;
    }
}

Код для файла макета recycler_view_items.xml.

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/cardview1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    card_view:cardElevation="7dp"
    card_view:contentPadding="7dp"
    card_view:cardCornerRadius="7dp"
    card_view:cardMaxElevation="7dp"
    >

        <TextView
            android:id="@+id/textview1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:textSize="20dp"
            android:textStyle="bold"
            android:padding="10dp"
            android:layout_gravity="center"
            android:gravity="center"
            />
</android.support.v7.widget.CardView>

http://www.android-examples.com/android-recyclerview-with-gridview-gridlayoutmanager/

или выполните простой макет таблицы макет таблицы Android - просто удалите