Vous pouvez utiliser le tutoriel d'exemple Android RecyclerView avec GridView GridLayoutManager.
http://www.Android-examples.com/Android-recyclerview-with-gridview-gridlayoutmanager/
Tutoriel d'exemple de RecyclerView Android avec GridView GridLayoutManager.
Code pour le fichier 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);
}
}
Code pour le fichier de mise en page 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>
Code pour le fichier 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;
}
}
Code pour le fichier de mise en page 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/
ou suivre la mise en page d'un tableau simple Mise en page des tables Android - exemple simple
0 votes
Quelles sont vos exigences ?
1 votes
cases.azoft.com/create-custom-layoutmanager-Android
0 votes
J'ai besoin d'implémenter une vue de table dynamique qui utilisera une grande quantité de données. Je pense donc qu'il doit être utilisé d'une manière ou d'une autre RecyclerView pour des questions de performance.
0 votes
Si vous pouvez nous indiquer vos besoins réels, nous pourrons vous aider plus facilement.
0 votes
@amit C'est juste une vue de table (comme
JTable
en swing) qui est capable de traiter une grande quantité de données. Je dois afficher des composants personnalisés tels que des combobox, des boutons dans les cellules. Et bien sûr, je vais ajouter des fonctionnalités comme le tri, le filtrage, etc. En fait, je pense que je peux les ajouter à ces fonctionnalités dansTableLayout
maisTableLayout
n'est pas la meilleure solution pour les données volumineuses, car il faut créer toutes les vues avant de les afficher à l'écran. Bien sûr, je n'insiste pas surTableLayout
Je suis ouvert à d'autres solutions.0 votes
Vous pouvez utiliser listview et le concevoir fichier de ligne comme tableview et que le chargement des données minimumn comme 100 enregistrements et fournir un bouton suivant (ou vous pouvez maintenir que sur le défilement vers le bas) pour le faire et selon que les données seront affichées. il peut également être très dynamique. vous pouvez commenter si vous avez passé par cette approche et bloqué quelque part@JosephK.
4 votes
Si vous ne l'avez pas encore vu, pensez aussi au nouveau FlexboxLayout de Google : Android-developers.googleblog.com/2017/02/
0 votes
Bien, je vais vérifier, merci.
0 votes
Le est également
StaggeredGridLayoutManager
dans la bibliothèque de support. Est-ce une option dans votre cas ?0 votes
Vous avez tout écrit mais votre question n'est toujours pas claire. Quand vous dites que recyclerview vous donnera un problème de performance, qu'entendez-vous par là ? L'avez-vous essayé ? Que s'est-il passé lorsque vous avez essayé ? et recyclerview ne crée pas toutes les vues avant de les montrer. C'est comme un pool d'objets, il crée uniquement les objets qui sont visibles pour l'utilisateur et les réutilise, donc je ne vois pas de problème de performance, il se peut que vous fassiez quelque chose d'autre pendant l'affichage des données, comme des calculs d'arrière-plan, et connaissez-vous la pagination ? medium.com/@etiennelawlor/ ? s'il vous plaît s
0 votes
Je veux dire des problèmes de mémoire en fait. Dans la mise en page de la table, je dois créer toutes les lignes initialement, mais avec la vue de recyclage (comme vous le dites), créer seulement quelques vues est suffisant. Mais il n'y a pas d'option pour utiliser la vue de recyclage comme une table. Cela peut être fait par
LinearLayoutManaager
mais mon tableau est très dynamique, comme je l'ai dit plus haut, je ne connaissais même pas les noms des colonnes. La largeur des colonnes devrait donc être redimensionnée automatiquement. Je vais essayer de rendre ma question plus claire.0 votes
Yup s'il vous plaît formez votre question correctement.
0 votes
La solution que je connais consiste à utiliser un GridLayoutManager à redimensionnement automatique. Le nombre d'éléments sur une ligne s'étend pour remplir la largeur de l'écran, mais le seul inconvénient est que la largeur de chacune des grilles est constante - elle ne peut pas être redimensionnée.
0 votes
Si le recyclage de la vue n'est pas obligatoire, vous pouvez utiliser la propriété "addView" (Table Row) pour le TableLayout parent.
0 votes
@ashish pouvez-vous nous en dire plus ?
RecyclerView
n'est pas obligatoire mais le mécanisme de recyclage est obligatoire. Avez-vous un exemple pour le faire enaddView
.0 votes
@Joseph s'il vous plaît jeter un coup d'oeil : notepad.pw/wlerivp1