Estoy tratando de enlazar una vista de lista a una Lista. Esto funciona bien cuando creo una actividad que se extiende ListActivity y tengo una vista de texto en mi archivo de diseño (es decir, la actividad es vinculante para el valor predeterminado listview en la actividad). Sin embargo, lo que me gustaría hacer es tener un ListView que contiene un botón de imagen (a más de realizar la deeltion de la fila) y la vista de texto para ilustrar el nombre del elemento que se está obligado.

Puede alguien me apunte en la dirección en la que iba a mostrar cómo hacer esto, que contiene:

  • El archivo de diseño
  • La clase de actividad

He jugado y no puedo parecer para que funcione, tan pronto como puedo agregar un ListView /botón de imagen en el archivo de diseño de mi código se bloquea. También he encontrado un par de ejemplos a través de google, pero ninguno parece funcionar!

InformationsquelleAutor januszstabik | 2010-09-20

2 Comentarios

  1. 11

    Usted puede conseguir la funcionalidad de la Lista, incluso si usted no se extienden ListActivity, pero también a través de la ampliación de la Actividad. Para lograr esto, necesitas el archivo de diseño con un nombre explícito elemento ListView, como se ilustra a continuación.

    <?xml version="1.0" encoding="utf-8"?>
    
    <RelativeLayout android:layout_width="fill_parent"
        android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/Details_RelativeLayout01">
        <ImageView android:layout_centerHorizontal="true"
            android:layout_alignParentTop="true" android:id="@+id/Details_ImageView01"
            android:layout_marginTop="10dip" android:layout_width="60dip"
            android:layout_height="60dip"></ImageView>
        <ListView android:layout_width="fill_parent"
            android:drawSelectorOnTop="false" android:clipChildren="true"
            android:fitsSystemWindows="true" android:layout_height="fill_parent"
            android:layout_below="@+id/Details_ImageView01" android:id="@+id/Details_ListView01">
        </ListView>
    </RelativeLayout>

    Aquí tengo la lista de resultados por debajo de la imagen. En su Actividad de clase debe extender ArrayAdapter. También, usted necesita para definir el aspecto de una fila de lista. En el siguiente ejemplo se hace en el R.layout.one_result_details_row.

    public class ListOfDetails extends Activity {
    private DetailsListAdapter mDetailsListAdapter;
    private Vector<String> mDetailsTimeStringsList;
    private Vector<String> mDetailsDateStringsList;
    private ListView mDetailsListView;
    private int mSelectedPosition;
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    super.setContentView(R.layout.detailed_results_list);
    ListView mDetailsListView = (ListView) findViewById(R.id.Details_ListView01);
    ImageView mSelectedPuzzleIcon = (ImageView) findViewById(R.id.Details_ImageView01);
    mDetailsListAdapter = new DetailsListAdapter();
    mDetailsListView.setAdapter(mDetailsListAdapter);
    mDetailsTimeStringsList = new Vector<String>();
    mDetailsDateStringsList = new Vector<String>();
    updateTheList();
    }
    class DetailsListAdapter extends ArrayAdapter<String> { 
    DetailsListAdapter() {          
    super(ListOfDetails.this, R.layout.one_result_details_row);
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) 
    {
    View row = null;
    LayoutInflater inflater = getLayoutInflater();
    row = inflater.inflate(R.layout.one_result_details_row, parent, false);
    TextView result = (TextView) row.findViewById(R.id.Details_Row_TextView01);
    TextView date = (TextView) row.findViewById(R.id.Details_Row_TextView02);
    Button deleteButton = (Button) row.findViewById(R.id.Details_Button01);
    deleteButton.setOnClickListener(
    new Button.OnClickListener() {
    @Override
    public void onClick(View v) {
    confirmDelete();
    }
    }
    );
    return(row);
    }
    }
    }

    Botón eliminar onClickListener() llama a una función para confirmar la eliminación. Por supuesto, esto tiene que ser hecho con respecto a la posición actual en la lista.

    Este fragmento de código es sólo la ilustración, pero espero que sea útil para resolver su problema.

    • Excelente, gracias voy a tratar de que esta nochebuena. Creo que el arrayadapter bit es el bit que me estaba perdiendo. Supongo que el adaptador predeterminado que se utiliza sólo tiene un adaptador que rellena una sola vista de texto?
    • Sí, basta con solo ver el texto en el adaptador por defecto.
    • Fantástica respuesta, muchas gracias por todos los detalles 🙂
    • Feliz de que me podría ayudar. Saludos.

Dejar respuesta

Please enter your comment!
Please enter your name here