Ответ 1
Существует множество открытых библиотек и кодов с открытым исходным кодом, чтобы узнать, как он может быть разработан.
Существует только два менеджера компоновки для RecyclerView
: LinearLayoutManager
и GridLayoutManager
. Есть ли способ использовать TableLayout
в качестве менеджера макетов с RecyclerView
? Любое предложение?
EDIT: Интересно, есть ли какое-либо решение без написания диспетчера компоновки с нуля. TableLayout
для меня достаточно, просто хочу добавить функцию рециркуляции для проблем с производительностью при обработке большого количества данных.
И создание таблицы, выглядящей listview, не решает мою проблему, я думаю, потому что моя таблица очень динамична, я не знаю даже имен столбцов, клиент решает все детали таблицы. Таким образом, ячейки будут настраиваться, ширина столбцов должна быть автоматически изменена, зависит от длины содержимого. Я не думаю, что список может справиться с этим.
Заранее благодарим за помощь.
Существует множество открытых библиотек и кодов с открытым исходным кодом, чтобы узнать, как он может быть разработан.
Посмотрите на эту библиотеку. Кажется, это именно то, что вам нужно. Он также имеет систему рециркуляции.
Создайте собственную строку с функцией linearlayout и добавьте эту строку в recyclerView Adapter, это только решение для создания таблицы типа Structure в RecyclerView.
Вы можете использовать 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 - просто удалите