RecyclerView с GridLayout Загрузка очень медленная - PullRequest
0 голосов
/ 03 мая 2020

Класс адаптера:

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. У меня это есть на фрагменте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...