2010-06-02 9 views
17

Estoy tratando de aprender cómo hacer cosas en Android, y no estoy seguro de la mejor manera de construir la interfaz.Implementación de la navegación "Drilldown" en la interfaz de usuario de la aplicación Android

He estado trabajando en portar una aplicación para iPhone, que usa controles de navegación y vistas de tabla para mirar las diferentes secciones: básicamente, alguien toca una celda de la tabla, que se acerca a otra mesa. cuando tocan una celda de esa mesa, se abre paso a una vista web que muestra la información.

Quiero hacer algo similar para la aplicación de Android, pero no sé cómo, o si hay una forma mejor nativa de Android. He descubierto cómo usar la vista web para mis propósitos, pero avanzar y retroceder en el árbol de la tabla no está claro.

Respuesta

26

Así que en un iphone cuando dices drill down supongo que te refieres a cuando un usuario toca una fila de lista y desliza una nueva vista desde la derecha, la mayoría de las veces tiene una barra de navegación en la parte superior para darle al usuario la opción de volver atrás?

La forma en que maneja Android es simplemente iniciando una nueva actividad. Para que tenga su 'List' ListActivity cuando se hace clic en un listItem, se define un nuevo intento que inicia su 'ListActivity' de los capítulos, y así sucesivamente. La barra de navegación en la parte superior de un iphone no es una interfaz de usuario estándar en Android, ya que la mayoría de las personas ven la tecla 'atrás' dedicada como una forma de volver a la pantalla de vistas previas.

Así es como se inicia una intención en caso de que no lo ha visto antes:

Intent chaptersIntent = new Intent(this, Chapters.class); 
this.startActivity(chaptersIntent); 

Este artículo es digno de una lectura rápida a través de actividades, ya que explica perfectamente

http://d.android.com/guide/topics/fundamentals.html

También eche un vistazo a la versión de Android de TableView - ListView:

http://d.android.com/reference/android/widget/ListView.html

y ListActivity:

http://d.android.com/reference/android/app/ListActivity.html


editar código :: Muestra lo haría algo como esto

public class Books extends ListActivity { 

private String[] mBooks = new String[]{ "Book1", "Book2", "Book3", "Book4" }; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    ArrayAdapter<String> booksAdapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, 
      android.R.id.text1, 
      mBooks); 

    this.setListAdapter(booksAdapter); 

} 

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
    super.onListItemClick(l, v, position, id); 

    Intent mViewChaptersIntent = new Intent(this, Chapters.class); 
    mViewChaptersIntent.putExtra("BookName", mBooks[position]); 
    startActivity(mViewChaptersIntent); 
} 

} 

Así se pasa a través de la identificación del libro como una extra para el Intento luego en tu Actividad de Capítulos obtienes ese extra en el método onCreate:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Bundle extras = getIntent().getExtras(); 
    if(extras != null) { 
     String bookId = extras.getString("BookName"); 
    } 
} 

Por último asegúrese de que todas las actividades nuevas se agregan al archivo AndroidManifest.xml:

<activity android:name=".YourClassName" 
    android:label="@string/activity_name" 
    > 
</activity> 

Espero que ayude

+0

Creo que esto podría ser lo que estoy buscando. No estoy del todo seguro de entenderlo, pero parece prometedor. Tengo el onclick trabajando para las filas de la tabla, y lo tengo cambiando de vistas usando Activity.setContentView, pero no estoy seguro de cómo configurarlo fácilmente (el botón Atrás sale del programa, creo que porque mi proyecto solo tiene una actividad) Parece que de su ejemplo que iba a tener que crear otra clase para cada sección (Books.class, Chapters.class, etc) Sin embargo, me sale esto: El constructor de Intención (nueva View.OnClickListener() { }, Class no está definido – AndyD273

+0

Intent informationalIntent = new Intent (this, Informational.class); startActivity (informationalIntent); – AndyD273

+0

Se agregó un código de muestra anterior, ojalá que sea más claro – m6tt

2

La forma principal en que se crea el ui de Android es utilizando xml. No estoy exactamente seguro de lo que quiere decir cuando dice desglosar, pero si quiere que cambie las vistas es tan simple como hacer que un conjunto de elementos xml sea visible y otro conjunto no. Consulte las páginas de desarrollador para obtener más ayuda.

http://developer.android.com/guide/topics/ui/index.html

se olvidó de mencionar esto también es un recurso muy bueno para principiantes. http://mobiforge.com/designing/story/understanding-user-interface-android-part-1-layouts

+0

Taladro abajo es un término de Apple para ir a otro nivel de un mando de navegación (Libro -> Capítulo-> Verso: toca qué libro deseas y se muestra una lista de capítulos. toca qué capítulo quieres y vas a un nivel más profundo. Para ir de verso a capítulo, simplemente haga clic en el botón Atrás en el controlador de navegación y recuerde dónde estaba antes.) Tendré que acostumbrarme a la forma XML de hacerlo. en xCode tienes que tener un controlador de vista diferente para cada sección, y mostrar/ocultar cosas es más difícil. – AndyD273

1

Como ya se señaló XML way de hacer diseños es el más preferido.

básicamente, alguien toca una celda en la mesa, que profundiza hasta llegar a otra tabla. cuando tocan una celda en esa tabla, se abre en una vista web que muestra la información.

Por lo que entendí de los taladros plazo hacia abajo, esto puede ser wat necesita

http://developer.android.com/guide/topics/ui/ui-events.html

a partir de documentos oficiales

un detector de eventos es una interfaz en la vista clase que contiene un único método de devolución de llamada . Estos métodos serán llamados por el marco de Android cuando la vista a la que se ha registrado el oyente es activada por la interacción del usuario con el elemento en la interfaz de usuario.

+0

Entonces, en el modo XML, la forma de hacerlo es capturar el evento táctil cuando el usuario selecciona un libro, volver a cargar la tabla con los capítulos, y cuando el usuario selecciona el capítulo ocultar la tabla y mostrar la vista web para mostrar el texto , todo en un diseño? – AndyD273

+0

Puede volver a utilizar el diseño de la tabla para libros, para mostrar capítulos también. WebView debe usar un diseño diferente para la legibilidad. – primpap

Cuestiones relacionadas