Класс адаптера:
public class AdaptadorTabla extends RecyclerView.Adapter<AdaptadorTabla.ViewHolderTabla> {
public class ViewHolderTabla extends RecyclerView.ViewHolder{
private TextView tvColumnaTabla;
public ViewHolderTabla(@NonNull View itemView) {
super(itemView);
tvColumnaTabla = itemView.findViewById(R.id.tvColumnaTabla);
}
}
private Context context;
private ArrayList<String> columnas;
private View view;
public AdaptadorTabla(Context context, ArrayList<String> columnas) {
this.context=context;
this.columnas=columnas;
}
@NonNull
@Override
public ViewHolderTabla onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
this.view = LayoutInflater.from(parent.getContext()).inflate(R.layout.columna_tabla, parent, false);
ViewHolderTabla viewHolderTabla = new ViewHolderTabla(view);
return viewHolderTabla;
}
@Override
public void onBindViewHolder(@NonNull ViewHolderTabla holder, int position) {
holder.tvColumnaTabla.setText(columnas.get(position));
}
Мой класс, в котором я использую, загружает сетку с данными из запроса
@Override
protected ResultSet doInBackground(String... strings) {
String query= strings[0];
try {
statement = conexion.prepareStatement(query, ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
resultSet = statement.executeQuery(query);
}catch (SQLException e){
}
return resultSet;
}
protected void onPostExecute(ResultSet resultSet) {
super.onPostExecute(resultSet);
try {
resultSetMetaData = resultSet.getMetaData();
numeroColumnas = resultSetMetaData.getColumnCount();
//CREO LA TABLA CON LOS RESULTADOS
while (resultSet.next()) {
for (int c = 1; c <= numeroColumnas; c++) {
columnas.add(resultSet.getString(c));
}
}
В этот момент я создаю gridLayout, потому что сначала мне нужно знать количество столбцов
//INSTANCIO MI GRID RECYCLERVIEW Y CREO LA TABLA CON LOS DATOS DEVUELTOS
GridLayoutManager gridLayoutManager = new GridLayoutManager(getActivity(), numeroColumnas);
recyclerTabla.setLayoutManager(gridLayoutManager);
adaptadorTabla = new AdaptadorTabla(getActivity(), columnas);
recyclerTabla.setAdapter(adaptadorTabla);
}catch (SQLException e){
}finally {
try{
statement.close();
resultSet.close();
}catch (SQLException e){
}
}
Если объем данных превышает 600, приложение может sh даже с 200 это занимает несколько секунд, например 5. У меня это есть на фрагменте.