Android GridView carga los elementos verticalmente

¿Es posible cargar elementos en GridView con orientación vertical? Quiero decir…

Situación normal – 3 columnas

Introduzca aquí la descripción de la imagen

----------------------------- 1 | 2 | 3 ----------------------------- 4 | 5 | 6 

Introduzca aquí la descripción de la imagen

Situación deseada – 3 columnas

 ----------------------------- 1 | 3 | 5 ----------------------------- 2 | 4 | 6 

¡Gracias por adelantado!

No creo que esto sea posible en absoluto.

Motivo :

  • Hay un fallo técnico haciendo esto ya que queremos desplazar los elementos verticalmente. Y también los elementos de representación en la pantalla es también la dirección vertical. En este caso no podemos completar el cálculo que debemos hacer en el método onLayout y onMeasure del GridView.
  • Si intenta otra forma, es decir, algunos de nosotros ha sugerido que snuffle la fuente de datos como [1,5,2,6,3,7,4,8, …] pero en este caso lo que sería el algoritmo de barajar?
  • Cuando el usuario lanza verticalmente, ¿cómo puede calcular cuántos elementos necesitamos hacer verticalmente y cuándo cambiar a la siguiente columna para procesar los demás elementos. No hay una fórmula matemática para ello.

Hice un poco de trabajo en esto y llegué a esta conclusion.Hope hacer esta pregunta sin respuesta contestada.

Por favor aclare, diga que tiene una cuadrícula como esta

 1 4 7 2 5 8 3 6 9 

Ahora si se desplaza hacia abajo verticalmente, que básicamente debe ser así?

 2 5 8 3 6 9 4 7 10 

En este caso,

  • Los artículos 4 y 7 no se reciclan, de hecho se trasladan a una nueva posición
  • El ítem 1 debe ser reciclado
  • Solo se introduce el ítem 10

Claramente, esto no es como funciona un ListView / GridView normal donde se recicla una fila a la vez, AFAIK necesitará personalizar GridView para obtener esta funcionalidad.

¿Es posible cambiar la secuencia de datos? En su ejemplo, cambie los datos a [1,3,5,2,4,6, …] para orientación horizontal, [1,5,2,6,3,7,4,8, …] para Orientación vertical.

// ¿Ha utilizado alguna vez GridLayout esto , Pruebe este:

 File -> Import -> <sdk_folder>\extras\android\support\v7\gridlayout> 

// Añade este proyecto como proyecto de biblioteca

// archivo xml – activity_main.xml

 <android.support.v7.widget.GridLayout 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:id="@+id/gridLayout" tools:context="com.example.gridlayoutdemo.MainActivity" > </android.support.v7.widget.GridLayout> 

// código Java

MainActivity.class

 import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.support.v7.widget.GridLayout; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends ActionBarActivity { private GridLayout gridLayout; private TextView[] textViews; private int noOfItems; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); gridLayout = (GridLayout) findViewById(R.id.gridLayout); gridLayout.setOrientation(1); gridLayout.setColumnCount(3); gridLayout.setRowCount(3); textViews = new TextView[8]; for (int i = 0; i < 8; i++) { textViews[i] = new TextView(MainActivity.this); textViews[i].setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); textViews[i].setText(String.valueOf(i)); textViews[i].setTextSize(25); textViews[i].setPadding(50, 25, 10, 25); gridLayout.addView(textViews[i]); } setContentView(gridLayout); for (noOfItems = 0; noOfItems < 8; noOfItems++) { textViews[noOfItems].setOnClickListener(new View.OnClickListener() { int pos = noOfItems; public void onClick(View v) { Toast.makeText(getBaseContext(), pos + " Clicked", Toast.LENGTH_SHORT).show(); } }); } } } 

// Si desea mostrar horizontalmente que hacer gridLayout.setOrientation (0);

Creo que necesitas https://github.com/ApmeM/android-flowlayout . Y poner la gravedad del niño a Gravity.FILL_HORIZONTAL

Incluso tienen orientación vertical u horizontal

Si está utilizando GridLayoutManager con RecyclerView, la manera fácil de llenar verticalmente los datos primero es:

 GridLayoutManager lLayout_artist = new GridLayoutManager(getActivity(),3,GridLayoutManager.HORIZONTAL, false); 

Usted puede cambiar la orientación de GridLayoutManager según su requisito.

Puede lograr esto utilizando GridLayout en lugar de GridView.

 <GridLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="match_parent" android:orientation="vertical" android:rowCount="2"> </GridLayout> 
  • Agregar vista entre 2 filas Gridview
  • GridView error en el espaciado horizontal
  • NotifyDataSetChanged () no funciona con mi adaptador para gridview
  • Android Grid View Scroll horizontalmente
  • GridView ampliable con reciclaje de vistas en Android
  • Realizar onClickListener en ImageView en GridView
  • Hacer cuadrados los elementos de GridView
  • ¿Cómo hacer deslizar la pantalla como picasso?
  • Cómo establecer diferentes columnas para filas en android gridview
  • ¿Cómo se puede utilizar la barra de desplazamiento horizontal de gridview en android?
  • android Espere entre actualizaciones de GridView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.