#

Android: Tabellarische String Resources
in einem Spinner verwenden
 
In Android Java kann man bei einer App unter den vorgegebenen Resourcen keine Tabellen mit Werten hinterlegen.
Deshalb muss man bei tabellarischen Resourcen auf mehrfache String-Arrays ausweichen, die man synchronisiert aufbauen muss.
 
Der gezeigte Java Code zeigt einen DropDown Spinner mit Werten aus der ersten Tabelle, welcher bei der Selection eines Wertes den Wert aus der zweiten Tabellen-Spalte lädt.
In diesem Fall führt die Auswahl einer Schule dazu, dass eine Web-URL Adresse zu dieser Schule geladen werden soll.

 
Die Logik läuft wie folgt.
 
Schritt 1: ermittle ausgewählten Wert aus DropDown-Spinner
Schritt 2: ermittle Index-Position des Wertes in der Tabelle 1
Schritt 3: hole Wert aus Tabelle 2 anhand der gleichen Position
 

//< get Index >
//Schritt 1: ermittle ausgewählten Wert aus DropDown-Spinner
String sSelected=parent.getItemAtPosition(position).toString();


//Schritt 2: ermittle Index-Position des Wertes in der Tabelle 1
int index= find_Index(getResources().getStringArray(R.array.Schulen),sSelected);
//</ get Index >

//< get Value2 >

//Schritt 3: hole Wert aus Tabelle 2 anhand der gleichen Position
String sURL=getResources().getStringArray(R.array.Schulen_Vertretung_URL)[index];
//</ get Value2 >
 

 
 
Darstellung von mehrspaltigen Resourcen.
Damit man eine Tabelle von Vorgaben-Werten unter resources in der Android App speichern kann, muss man diese in mehrer String-Arrays unterteilen.
Für jede Spalte der Vorgabewerte benögt man ein eigenen String-Array mit einem Namen benannt.
 
arrays.xml

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

<resources>
<!--Schulen-->
<string-array name="Schulen">
<
item name="MPG">72622 Nuertingen, MPG</item>
<
item name="Hoegy">72622 Nuertingen, Hoegy</item>
</
string-array>

<
string-array name="Schulen_Vertretung_URL">
<
item>http://www.mpg-vertretungsplan.de/</item>
<
item>http://www.hoegy.de/cms/?q=node/97</item>
</
string-array>
<!--/Schulen-->

</resources>
 

 
Video Anleitung:

 
 
 
MainActivity.java

package de.rue25.schule_vertretungsplan;

import android.app.Activity;
import android.content.res.Resources;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;

import java.util.Arrays;

public class MainActivity extends AppCompatActivity { //implements AdapterView.OnItemSelectedListener

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.
activity_main);

Spinner spinner=(Spinner) findViewById(R.id.
select_Schule);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this,R.array.Schulen,android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.
simple_spinner_dropdown_item);
// Apply the adapter to the spinner
spinner.setAdapter(adapter);

spinner.setOnItemSelectedListener(
new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//< get Index >
String sSelected=parent.getItemAtPosition(position).toString();
int index= find_Index(getResources().getStringArray(R.array.Schulen),sSelected);
//</ get Index >

//< get Value2 >
String sURL=getResources().getStringArray(R.array.Schulen_Vertretung_URL)[index];
//</ get Value2 >

show_Message(sURL);
}

@Override
public void onNothingSelected(AdapterView<?> parent) {
//Another interface callback
}
});

//spinner.setOnItemSelectedListener(this);
}



//---< find Index of string-value in Array >---
//*find index position of an element in an array. @by the value
public int find_Index(String[] array, String sSearch) {
for(int i=0; i<array.length; i++) {
if(array[i].equals(sSearch)) {
return i; //return index
}
}
return -1;
}
//---</ find Index of string-value in Array >---


//---< msg() >---
//*show short toast message
public void show_Message(String sMessage) {
Toast.makeText(
this,sMessage ,Toast.LENGTH_SHORT).show();
}
//---</ msg() >---

}
 

 
Mobile

.

123movies