Poblar AlertDialog de base de datos, base de datos Valor de retorno (no coloque)

votos
0

Tengo un botón, Carga del equipo, que, al hacer clic, quiero tener una lista emergente de equipos en la base de datos. Mi pregunta es triple:

  1. Actualmente tengo una AlertDialog que aparece al hacer clic en el botón, pero no puedo encontrar cómo llenar las filas de la AlertDialog de la base de datos. (Lista actualmente estática)
  2. La segunda parte de esta pregunta es que una vez que puedo rellenar la lista, quiero mostrar dos columnas devueltas concatenados juntos como sigue: Nombre del equipo (Ciudad) o team_ID - Nombre del equipo (Ciudad).
  3. En tercer lugar, cuando hacen clic en el artículo, quiero que vuelva el valor de la columna team_id de la consulta en lugar de la cadena de valor de posición de la lista o lista.

es posible? Aquí está mi código para rellenar la lista con valores estáticos:

final CharSequence[] team_list = {Team 1, Team 2, Team 3};

final AlertDialog.Builder load_builder = new AlertDialog.Builder(this);
load_builder.setTitle(@string/pick_team);
load_builder.setItems(team_list, new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int item) {
        Toast.makeText(getApplicationContext(), team_list[item], Toast.LENGTH_SHORT).show();
        // I will sent team_id as parameter to query, to get all data for that team
    }
});

He buscado ampliamente, pero parece que no puede encontrar la respuesta correcta. Si esto es mejor como un ListView emergente y / o con su propio layout.xml, por favor hágamelo saber.

Publicado el 03/08/2012 a las 00:06
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
0

Mis problemas han sido resueltos. He utilizado un ListView dentro de un diálogo. Solía ​​2 ArrayLists, uno cuerdas de almacenamiento para ListView, y el otro almacenamiento correspondiente ID (a juego con índice de matriz).

team_list.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">

  <ListView
    android:id="@+id/listview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    />
</LinearLayout>

ManageTeams.java:

ArrayList<String> team_results = new ArrayList<String>();
ArrayList<String> team_results_id = new ArrayList<String>();
ListView team_listView;
Dialog listDialog;
...
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.manage_teams);
...
    Button load_btn=(Button)findViewById(R.id.load_team_btn);
    load_btn.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            getTeams();
        }
    });
...
}

public void getTeam(String selected_team_id)
{
    Team team;

    DatabaseHelper db = new DatabaseHelper(this);
    team = db.getTeam(selected_team_id);
    ...
}

public void getTeams()
{
    final String colTeamID="team_id";
    final String colTeamName="team_name";
    final String colCity="city";
    final String colState="state";

    team_results.clear();
    team_results_id.clear();

    DatabaseHelper db = new DatabaseHelper(this);
    Cursor team_list = db.getTeams();

    if (team_list != null )
    {
        if (team_list.moveToFirst())
        {
            int counter = -1;
            do {
                counter = counter + 1;
                // assign strings to array for ListView
            } while (team_list.moveToNext());
        }
    }

    listDialog = new Dialog(this);
    listDialog.setTitle("Select Team");
    LayoutInflater li = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View v = li.inflate(R.layout.team_list, null, false);
    listDialog.setContentView(v);
    listDialog.setCancelable(true);

    team_listView = (ListView) listDialog.findViewById(R.id.listview);
    team_listView.setOnItemClickListener(this);
    team_listView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, team_results));
    //now that the dialog is set up, it's time to show it
    listDialog.show();

    db.close();
}
...
public void onItemClick(AdapterView<?> arg0, View arg1, int pos, long arg3)
{
    Log.i("ManageTeams", "onItemSelected");
    getTeam(team_results_id.get(pos));
    listDialog.dismiss();
}
Respondida el 07/08/2012 a las 01:51
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more