He instalación de una listfragment en mi proyecto. pero parece que mi fragmento de cant get it right con mi adaptador. su causa de Context context en MyListAdapter. si hago clic para corregirlo. cambia en el MenuFragment menuFragment. Pero después de que los cambios, MyListAdapter obtenido un error. así que me corrija. cambia en el Context context. y de nuevo, si puedo corregirlo, que todavía continúa. su bucle como el que.

Nota: Lo que quiero lograr es ListFragment con el icono. como mi otra pregunta antes (pero desafortunadamente no hay una respuesta de ella).

public class MenuFragment extends ListFragment {


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    return super.onCreateView(inflater, container, savedInstanceState);  
    }

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

     String [] proMenu ={ "Homies", "Best Nearby", "Coupon" , "Profile" , "History" , "", "Setting" ,
               "About" , "Sign Out"};

     setListAdapter(new MyListAdapter(this, proMenu));

}

@Override
public void onListItemClick(ListView lv, View v, int position, long id) {
    Fragment newContent = null;
    switch (position) {
    case 0:
        newContent = new ColorFragment();
        break;
    case 1:
        Intent intent7 = new Intent();
        intent7.setClass(getActivity(), Home.class);
        intent7.putExtra("index", position);
        startActivity(intent7);
        break;

EDIT : Este es mi diseño. su perfectamente bien ahora. sólo tengo que ajustar el textview y esquema lineal, de modo que la palabra no se reduce a la mitad. pero estoy enfrenta a otro problema. es como la imagen de fondo se acumulan cada uno de los otros. este es el xml en mi diseño.

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal" 
android:cacheColorHint="#00000000" 
android:background="@drawable/menu_drawer">  

<ImageView
    android:id="@+id/row_icon"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:padding="10dp"
    android:src="@drawable/ic_launcher" />

<TextView
    android:id="@+id/row_title"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:gravity="center_vertical"
    android:padding="10dp"
    android:text="Medium Text"
    android:textSize="20dp"
    android:textAppearance="@android:style/TextAppearance.Medium" />

</LinearLayout>

ListFragment con Adaptador Personalizado

Y si puedo eliminar este android:background="@drawable/menu_drawer" de la linear layout. va a ser el fondo perfecto. no acumulan cada uno de los otros. pero cuando estoy pasando en la lista, el fondo go nuts, su pasado y se muestran algunas fondo negro en ella. es como el problema con el listview android:cacheColorHint="#00000000". ya he añadido que cachecolor en linear layout. pero aún mostrando aquellos fondo negro. es como este.

ListFragment con Adaptador Personalizado

sé cuál es el problema. porque el defecto de fondo son de color negro. pero no sé cómo resolverlo.

EDIT2 : Negro, Problema Resuelto.

RESUELTO.

  • En primer lugar, el uso de android:layout_height="50dp" para la altura de la fila, así que es normal que el texto va a ser cortado como no puede caber de que la altura(en especial con el uso de un 20dp tamaño(el uso de sp en su lugar)). Uso wrap_content para la altura de la fila. En segundo lugar, la cacheColorHint atributo debe ser utilizado en la ListView y no la fila de fondo(no se pudo establecer en el código).
  • gracias. usted me salvó un montón. de hecho tengo 1 pregunta final. cómo hacer que el espacio entre la historia y la configuración. así que el 3 lista, será en el botón (configuración, acerca de & cerrar sesión).
  • Si que es algún tipo de menú, entonces usted está mejor con la colocación de la ListView con un LinearLayout que contendrá las filas de modo que se podría separarlos como usted desea. Usted todavía puede hacer uso de la ListView calculando el espacio exacto necesario para la pantalla y añadir una tercera fila vacía con esa altura.
  • gracias. he actualizado a la pregunta 😀 en realidad es el menú. slidemenu de jfeinstein10
  • Me dice que inserte una fila vacía para que usted calcule la altura adecuada. Usted realmente debe iniciar una nueva pregunta con respecto a este.
  • bien gracias. por cierto, ¿cómo insertarlo ? mediante programación? gracias.

InformationsquelleAutor Nicolas | 2013-04-11

3 Comentarios

  1. 7

    De que no pase válido Context a su adaptador, un Fragment no un Context. Usted necesita para utilizar , por ejemplo, un Activity como el Context:

    setListAdapter(new MyListAdapter(getActivity(), proMenu));

    Espero que además de implementar el getCount() método en el adaptador de lo contrario no verá nada en la ListView no importa cuántos elementos tiene.

    • muchas muchas gracias muchas muchas gracias. finalmente, después de una semana de los que resolvía. FYI = i didnt implementar getCount() y funcionan perfectamente. pero hay un problema, aunque. mi texto no se ven tan ajuste en la lista. digamos que cuando el menú «cercanos». la parte inferior de la palabra «y» no llenar la lista. es solo la mitad. es como la «u».
    • El texto se corta en la parte inferior? Puede registrar su archivo de diseño?
    • he editado la pregunta «la adición de la disposición». Gracias
  2. 1
    Following is the method to create listFragement list view:
    HealthAdvice.java
    package com.example.babs;
    import android.app.ListFragment;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    public class HealthAdvice extends ListFragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.health_advice, container, false);
    return rootView;
    }
    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    HealthAdviceArray health_data[] = new HealthAdviceArray[]
    {
    new HealthAdviceArray(R.drawable.ic_launcher, "Cloudy"),
    new HealthAdviceArray(R.drawable.ic_launcher, "Showers"),
    new HealthAdviceArray(R.drawable.ic_launcher, "Snow"),
    new HealthAdviceArray(R.drawable.ic_launcher, "Storm"),
    new HealthAdviceArray(R.drawable.ic_launcher, "Sunny")
    };
    HealthAdviceAdapter adapter = new HealthAdviceAdapter(getActivity(), 
    R.layout.health_advice_item_row, health_data);
    /** Setting the array adapter to the list view */
    setListAdapter(adapter);
    }
    }//end main class HealthAdvice
    Step 2:
    HealthAdviceAdapter.java
    package com.example.babs;
    import android.app.Activity;
    import android.content.Context;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ArrayAdapter;
    import android.widget.ImageView;
    import android.widget.TextView;
    public class HealthAdviceAdapter extends ArrayAdapter<HealthAdviceArray>{
    Context context; 
    int layoutResourceId;    
    HealthAdviceArray data[] = null;
    public HealthAdviceAdapter(Context context, int layoutResourceId, HealthAdviceArray[] data) {
    super(context, layoutResourceId, data);
    this.layoutResourceId = layoutResourceId;
    this.context = context;
    this.data = data;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
    View row = convertView;
    HealthAdviceArrayHolder holder = null;
    if(row == null)
    {
    LayoutInflater inflater = ((Activity)context).getLayoutInflater();
    row = inflater.inflate(layoutResourceId, parent, false);
    holder = new HealthAdviceArrayHolder();
    holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon);
    holder.txtTitle = (TextView)row.findViewById(R.id.txtTitle);
    row.setTag(holder);
    }
    else
    {
    holder = (HealthAdviceArrayHolder)row.getTag();
    }
    HealthAdviceArray weather = data[position];
    holder.txtTitle.setText(weather.title);
    holder.imgIcon.setImageResource(weather.icon);
    return row;
    }
    static class HealthAdviceArrayHolder
    {
    ImageView imgIcon;
    TextView txtTitle;
    }
    }
    Step 3:
    HealthAdviceArray.java
    package com.example.babs;
    public class HealthAdviceArray {
    public int icon;
    public String title;
    //we are over loading here
    public HealthAdviceArray(){
    super();
    }
    public HealthAdviceArray(int icon, String title) {
    super();
    this.icon = icon;
    this.title = title;
    }
    }
    step 4: 
    Health Advice health_advice.xml
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FFFFFF"
    android:orientation="vertical" >
    <ListView
    android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />
    </LinearLayout>
    step 5:
    Health Advice items: health_advice_item_row.xml
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal"
    android:padding="10dp" >
    <ImageView
    android:id="@+id/imgIcon"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_marginBottom="5dp"
    android:layout_marginRight="15dp"
    android:layout_marginTop="5dp"
    android:contentDescription="@string/image_view"
    android:gravity="center_vertical" />
    <TextView
    android:id="@+id/txtTitle"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_marginBottom="5dp"
    android:layout_marginTop="5dp"
    android:gravity="center_vertical"
    android:textColor="#000000"
    android:textSize="22sp"
    android:textStyle="bold" />
    </LinearLayout>
  3. 0

    Mientras que la creación de su Adaptador Personalizado no pase «Contexto» como objeto de referencia, simplemente pase la Actividad objeto de la Costumbre Adaper.

    public class HealthAdvice extends ListFragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.health_advice, container, false);
    return rootView;
    }
    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    HealthAdviceArray health_data[] = new HealthAdviceArray[]
    {
    new HealthAdviceArray(R.drawable.ic_launcher, "Cloudy"),
    new HealthAdviceArray(R.drawable.ic_launcher, "Showers"),
    new HealthAdviceArray(R.drawable.ic_launcher, "Snow"),
    new HealthAdviceArray(R.drawable.ic_launcher, "Storm"),
    new HealthAdviceArray(R.drawable.ic_launcher, "Sunny")
    };
    HealthAdviceAdapter adapter = new HealthAdviceAdapter(getActivity(), 
    R.layout.health_advice_item_row, health_data);
    /** Setting the array adapter to the list view */
    setListAdapter(adapter);
    }
    }//end main class HealthAdvice

Dejar respuesta

Please enter your comment!
Please enter your name here