package com.example.tim.therealshit; import android.app.Fragment; import android.content.SharedPreferences; import android.os.Bundle; import android.support.annotation.Nullable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.Spinner; import android.widget.Toast; /** * Created by Tim on 27.02.2017. */ public class EinstellungenFragment extends Fragment { View meinView; Button design; Spinner dropdown; static String ausgewaehlteKlasse = "TG 12/3"; public static final String EINSTELLUNGEN ="einstellungen"; public String [] spinnertext = {"1BFE","1BFR1","1BFR2","1BKFH","2BFE1","2BFE2","2BFLT1","2BFLT2","2BFMS1","2BFMS2","TG12/1","TG12/2","TG12/3","usw..."}; @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { meinView = inflater.inflate(R.layout.einstellungen, null); dropdown = (Spinner) meinView.findViewById(R.id.Dropdownmeue); // Objekt aus dem xml code wird hier initialisiert mit der Variable "dropdown" ArrayAdapter spinneradapter = new ArrayAdapter(getActivity(), android.R.layout.simple_spinner_dropdown_item,spinnertext); dropdown.setAdapter(spinneradapter); dropdown.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { int dropdownposition = dropdown.getSelectedItemPosition(); switch (dropdownposition) { case 0: { ausgewaehlteKlasse = "1BFE"; speichern(); Toast.makeText(getActivity(), "case 0", Toast.LENGTH_SHORT).show(); // wird ausgeführt wenn der erste Punkt in dem Dropdownmenü ausgeführt wird break; // sonst werden alle cases ausgeführt } case 1: { Toast.makeText(getActivity(), "case 1", Toast.LENGTH_SHORT).show(); // wird ausgeführt wenn der 2 Punkt in dem Dropdownmenü ausgeführt wird break; // sonst werden alle cases ausgeführt } case 2: { Toast.makeText(getActivity(), "case 2", Toast.LENGTH_SHORT).show(); // wird ausgeführt wenn der 3 Punkt in dem Dropdownmenü ausgeführt wird break; // sonst werden alle cases ausgeführt } case 3: { Toast.makeText(getActivity(), "case 3", Toast.LENGTH_SHORT).show(); // wird ausgeführt wenn der 4 Punkt in dem Dropdownmenü ausgeführt wird break; // sonst werden alle cases ausgeführt } case 4: { Toast.makeText(getActivity(), "case 4", Toast.LENGTH_SHORT).show(); // wird ausgeführt wenn der 5 Punkt in dem Dropdownmenü ausgeführt wird break; // sonst werden alle cases ausgeführt } case 5: { Toast.makeText(getActivity(), "case 5", Toast.LENGTH_SHORT).show(); // wird ausgeführt wenn der 6 Punkt in dem Dropdownmenü ausgeführt wird break; // sonst werden alle cases ausgeführt } } } @Override public void onNothingSelected(AdapterView parent) { } }); design = (Button) meinView.findViewById(R.id.schwarzesdesign); // Objekt aus dem xml code wird hier initialisiert mit der Variable "design" design.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } }); return meinView; } public void speichern() { SharedPreferences sp = getActivity().getSharedPreferences(EINSTELLUNGEN,0); SharedPreferences.Editor editor = sp.edit(); editor.putString("Klasse",ausgewaehlteKlasse); editor.commit(); Toast.makeText(getActivity(),"safed",Toast.LENGTH_LONG).show(); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); } } package com.example.tim.therealshit; import android.app.FragmentTransaction; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v4.view.NestedScrollingChild; import android.support.v4.widget.NestedScrollView; import android.view.View; import android.support.design.widget.NavigationView; import android.support.v4.view.GravityCompat; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.widget.Button; import android.widget.FrameLayout; import android.widget.TextView; import android.widget.Toast; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.select.Elements; import java.io.IOException; public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { public EinstellungenFragment Fragment1; // dem EinstellungsFragment wird die Variable Fragment1 zugewiesen. public ImpressumFragment Fragment2; // dem ImpressumFragment wird die Variable Fragment2 zugewiesen. //public StartklasseFragment Fragment3; // dem StartklasseFragment wird die Variable Fragment3 zugewiesen. public android.app.FragmentManager fragmentManager; // wird benötötigt damit die Fragments nachher angezeigt werden können public FragmentTransaction fragmentTransaction; public Button bt1; public TextView tv3; public FrameLayout layout; static SharedPreferences sharedpreferences; public TextView parserausgabe; public Button buttonstart; Document doc; public int I = 0; public StringBuilder sb; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); //bt1 = (Button) findViewById(R.id.button2); layout = (FrameLayout) findViewById(R.id.content_frame); buttonstart = (Button) findViewById(R.id.buttonstart) ; tv3 = (TextView) findViewById(R.id.textView3); parserausgabe=(TextView)findViewById(R.id.TextViewpaserausgabe); sb = new StringBuilder(); // wir initialisieren einen StringBuilder, um nachher damit den Vertretungstext auf einem TextView auszugeben setSupportActionBar(toolbar); buttonstart.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { parsermethode(); } }); /* bt1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent behinderterintent = new Intent(MainActivity.this,RealStartscreen.class); startActivity(behinderterintent); } // bei einem Klick auf den Button wird die MainActivity geöffnet });*/ DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); drawer.setDrawerListener(toggle); toggle.syncState(); NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); Fragment1 = (EinstellungenFragment) android.app.Fragment.instantiate(this, EinstellungenFragment.class.getName(), null); // Fragmente werden mit dem Code verknüpft Fragment2 = (ImpressumFragment) android.app.Fragment.instantiate(this, ImpressumFragment.class.getName(), null); // Fragmente werden mit dem Code verknüpft //Fragment3 = (StartklasseFragment) android.app.Fragment.instantiate(this, StartklasseFragment.class.getName(), null); // Fragmente werden mit dem Code verknüpft fragmentManager = getFragmentManager(); //FragmentManager wird initialisiert fragmentTransaction = fragmentManager.beginTransaction(); // fragmentTransaction.add(R.id.content_frame, Fragment1); // Das Fragment soll in der content_main in das content_frame layout eingefügt werden, bzw es ersetzen. fragmentTransaction.commit(); // Die Freigabe das Fragment zu verändern soll nun wieder beendet werden. } private void parsermethode() { new Thread(new Runnable() {// ermöglicht uns das gleichzeitige ausführen von Threads, indem wir eine anonyme Runnable Override run Methode erzeugen @Override public void run() { try {// Man benötigt eine Try-Catch Umgebung um den HTML code von einer Webside abzurufen, da es sein kann, dass kein Internet vorhanden ist oder die Webside nicht erreichbar ist doc = Jsoup.connect("http://s436248311.online.de/unterricht/extern/vertretung_extern/13/w/w00000.htm").timeout(0).get(); //Der Behfehl stellt eine Verbindung zur //Webseite her und schreibt den HTML Code in ein document-Objekt Elements containerTD = doc.select("td"); //Der Container Im HTMAL -Code beonhaltet alle für uns relevanten Informationen über Klasse, Datum, Stunde, Lehrer und Art der Vertretung int anzahlElemnte = containerTD.size(); //Um Recurcen zu Sparen hat die Tabelle eine dynamische Länge. String[] alles = new String[anzahlElemnte]; //Das Array beinhaltet alle Elemente in der Reihenfolge in der sie im HTML Code vorkommen for (int k = 0; k < containerTD.size(); k++) {//Da oftmals Vergangene Tage als "Vertretungen sind nicht freigegeben" bezeichnet weden muss man diese Elemte Überspringen // und ein neues Sting Array mit allen Elementes ausser den "Vertretungen sind nicht freigegeben"-Elementen. if (!containerTD.get(k).text().contains("Vertretungen sind nicht freigegeben")) { alles[I] = containerTD.get(k).text(); I++; } } int anzahlSpalten = alles.length / 6; // Da jede Vertretuzng genau 6 eingenschaften besitzen ist die Anzahl der Spalten die Anzahl der Elemte/6 String[][] Tabelle = new String[anzahlSpalten][6]; //Inizialisierung des Array mit dynamischen Reihen und Spalten convertierungIn2DimenstionaleTabelle(alles, anzahlSpalten, Tabelle); // Das Array "alles" wird in eine 2 Dimensionale TAbelle überfuhrt sb = ausgabe(anzahlSpalten, Tabelle);//der String Builder wird vorerst allen Vertretungen zugeordnet filterKLasse(anzahlSpalten, Tabelle);//der Filter wird danach hinzugefür und listet alle Vertretungen einer ausgewählten Klasse auf } catch (IOException e) { sb.append("Leider keine aktive Verbindung zur Webseite!");//Falls ein Fehler durch die Try-Catch Umgebung ausgelöst wird wird eine Fehlermeldung auf dem Textview ausgegeben. } //Man kann nur in einem UI Thred die Textausgabe mit dem Sring-Builder inizialieren und somit // nur hier die Parser-Textview bescheiben. Falls ein Fehler durch die Try-Catch Umgebung ausgelöst wird wird eine Fehlermeldung auf dem Textview ausgegeben. runOnUiThread(new Runnable() { @Override public void run() { parserausgabe.setText(sb.toString()); } }); } }).start(); } //Filter für Klasse Prototyp private void filterKLasse(int anzahlSpalten, String[][] tabelle) { SharedPreferences s = getSharedPreferences(EinstellungenFragment.EINSTELLUNGEN,0); String ausgewaehlteklasse =s.getString("Klasse",""); Toast.makeText(this,"du lappen", Toast.LENGTH_SHORT); //String ausgewaehlteklasse= ef.getAusgewaehlteKlasse(); sb.append("\n"); for (int k = 0; k < anzahlSpalten; k++) { if (tabelle[k][0].contains(ausgewaehlteklasse)) { for (int k2 = 0; k2 < 6; k2++) { sb.append(tabelle[k][k2] + "\t"); } sb.append("\n"); } } } public void convertierungIn2DimenstionaleTabelle(String[] alles, int anzahlSpalten, String[][] Tabelle) { int I; I = 0; for (int k = 0; k < anzahlSpalten; k++) { for (int k2 = 0; k2 < 6; k2++) { if (I < 480) { Tabelle[k][k2] = alles[I]; I++; } else { break; } } } } public StringBuilder ausgabe(int anzahlSpalten, String[][] Tabelle) { for (int k = 0; k < anzahlSpalten; k++) { for (int k2 = 0; k2 < 6; k2++) { sb.append(Tabelle[k][k2] + "\t"); //System.out.print(Tabelle[k][k2] + "\t" + "\t"); } sb.append("\n"); } return sb; } @Override public void onBackPressed() { DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); if (drawer.isDrawerOpen(GravityCompat.START)) { drawer.closeDrawer(GravityCompat.START); } else { super.onBackPressed(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } @SuppressWarnings("StatementWithEmptyBody") @Override public boolean onNavigationItemSelected(MenuItem item) { // Handle navigation view item clicks here. int id = item.getItemId(); if (id == R.id.Main) { Intent behinderterintent = new Intent(MainActivity.this,MainActivity.class); startActivity(behinderterintent); /* fragmentManager = getFragmentManager(); //FragmentManager wird initialisiert fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.replace(R.id.content_frame, Fragment3); // Das Fragment soll in der content_main in das content_frame layout eingefügt werden, bzw es ersetzen. fragmentTransaction.commit(); // Die Freigabe das Fragment zu verändern soll nun wieder beendet werden. // Handle the camera action*/ } else if (id == R.id.nav_impressium) { fragmentManager = getFragmentManager(); //FragmentManager wird initialisiert fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.replace(R.id.content_frame, Fragment2); // Das Fragment soll in der content_main in das content_frame layout eingefügt werden, bzw es ersetzen. fragmentTransaction.commit(); // Die Freigabe das Fragment zu verändern soll nun wieder beendet werden. } else if (id == R.id.einstellungenlayout) { fragmentManager = getFragmentManager(); //FragmentManager wird initialisiert fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.replace(R.id.content_frame, Fragment1); // Das Fragment soll in der content_main in das content_frame layout eingefügt werden, bzw es ersetzen. fragmentTransaction.commit(); // Die Freigabe das Fragment zu verändern soll nun wieder beendet werden. } DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); drawer.closeDrawer(GravityCompat.START); return true; } }