2012-03-31 3 views
0

einstellen und erhalten Ich habe ein Problem, wie ich einen Spinner hatte, der die Namen aller Entwickler enthält, die im Unternehmen arbeiten.
Ich habe die ArrayAdapter mit einem Array mit den Namen aller Entwickler verwendet, die aus der Datenbank abgerufen wird.Wie man die ID für die Artikel im Spinner in Android

Das Problem ist, dass, wenn ich das Feld Name des Entwicklers aktualisiere, ich nur den Namen des Entwicklers bekomme, der nicht ausreicht, um die Daten zu aktualisieren, da es sich um mehrere Entwickler mit demselben Namen im Unternehmen handeln kann.
So, jetzt brauche ich die ID des Entwicklers, sie zu aktualisieren ..
Wie zu speichern, dass id des Entwicklers mit den Spinner so, dass ich das erreichen kann.

Zum Beispiel möchte ich tun, wie wie das ist, wir in HTML tun ::
<select>
<option id="1">Developer1</option>
<option id="2">Developer2</option>
<option id="3">Developer2</option>
<option id="4">Developer2</option>
</select>

wo die id befestigt die Datenbank id wäre.
Ich möchte dies auf Android nachzuahmen.

Dies ist der Code, den ich verwendet habe, die Namen im Array speichern ::

String alldevelopers = null; 
try 
{ 
    ArrayList<NameValuePair> postP = new ArrayList<NameValuePair>(); 
    alldevelopers = CustomHttpClient.executeHttpPost("/fetchdevelopers.php", postP); 
    String respcl = alldevelopers.toString(); 
    alldevelopersParser dev = new alldevelopersParser(); 
    ow = dev.parseByDOM(respcl); 
} 
catch (Exception e) { 
    e.printStackTrace(); 
} 

String developers[] = new String[ow.length]; //dev is a class object 
for (int n = 0; n < ow.length; n++) 
{ 
    developers[n] = ow.developer[n][2]; 
} 

Dies ist der Spinner, der das Array ..

final Spinner devl = (Spinner) findViewById(R.id.towner); 
devl.setOnItemSelectedListener(managetasks.this); 
ArrayAdapter<String> b = 
new ArrayAdapter<String>getApplicationContext(), 
android.R.layout.simple_spinner_item,developers); 
b.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); 
devl.setAdapter(b); 
+0

Eine Frage: der Spinner ist geladen mit Entwickler Namen in der gleichen Reihenfolge wie in der Datenbank genommen? Es könnte nützlich sein, die Position des Elements innerhalb des Drehfelds zu betrachten, um für dieselbe Position die ID des Programmierers in der db zu bestimmen. – Ant4res

+0

Ja ... die Reihenfolge des Ladens wäre die gleiche wie die der Datenbank ... aber dann wäre die ID der Entwickler nicht in der inkrementellen Weise, als ob einige der Entwickler gelöscht würden, dann würde ihre ID fehlen in der liste ... also können wir die position itemSelected nicht direkt mit der ID in der datenbank vergleichen ... Ist das anders, mein lieber Freund, der die Datenbank auf der Basis der ItemSelectedposition Nummer suchen würde? –

Antwort

1

Wenn Sie setOnItemSelectedListener auf ausführen drehen würde der Spinner, dann haben Sie Verfahren wie

public void onItemSelected(AdapterView<?> adapterView, View view, 
        int position, long id) {} 

Sie hier die positi findout können Wählen Sie den ausgewählten Entwicklernamen des Drehfelds aus und verwenden Sie diese Position, um Daten aus dem Array abzurufen.

+0

funktioniert das für Sie? – Jitendra

+0

Jitender ... du hast Recht aber dann wie würde ich in der Datenbank vergleichen ?? Nur ich kann damit umgehen ist die Position und der Wert angezeigt ... ist ihre Art und Weise, in der ich die Datenbank-ID des Entwicklers mit dem Spinner anhängen könnte, wenn ich den Wert aus dem Spinner holen, könnte ich die Datenbank abrufen ID angehängt mit dem abgerufenen Element .. ?? –

+0

Wenn Sie den gesamten Datensatz des Projekts in arrayList oder einer Sammlung abrufen, können Sie das gesamte Objekt von dieser Position aus arrayList der Auflistung abrufen. Wenn Sie immer noch Probleme haben, geben Sie bitte Ihren Code frei. – Jitendra

Verwandte Themen