diff --git a/app/build.gradle b/app/build.gradle index 6d54f62..37d17e4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -27,4 +27,5 @@ dependencies { androidTestImplementation 'androidx.test.ext:junit:1.1.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' implementation 'com.squareup.okhttp3:okhttp:4.2.2' + implementation 'androidx.recyclerview:recyclerview:1.1.0' } diff --git a/app/src/main/java/com/janasroboter/MainActivity.java b/app/src/main/java/com/janasroboter/MainActivity.java index 9bf784a..d62f5bb 100644 --- a/app/src/main/java/com/janasroboter/MainActivity.java +++ b/app/src/main/java/com/janasroboter/MainActivity.java @@ -1,6 +1,10 @@ package com.janasroboter; import androidx.appcompat.app.AppCompatActivity; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + import android.os.Bundle; import android.os.StrictMode; import android.view.View; @@ -10,10 +14,17 @@ import android.widget.Toast; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; +import java.util.ArrayList; +import java.util.List; + +import static com.janasroboter.REST.URL; public class MainActivity extends AppCompatActivity { - private final String URL = "http://192.168.4.1"; + private RecyclerView recyclerView; + private RecyclerView.Adapter modeAdapter; + private LinearLayoutManager layoutManager; + private List data; @Override protected void onCreate(Bundle savedInstanceState) { @@ -29,6 +40,28 @@ public class MainActivity extends AppCompatActivity { .detectNetwork() .penaltyLog() .build()); + + recyclerView = findViewById(R.id.recyclerv); + + recyclerView.setHasFixedSize(true); + layoutManager = new LinearLayoutManager(getBaseContext()); + recyclerView.setLayoutManager(layoutManager); + + data = new ArrayList<>(); + setRecyclerData(data); + + modeAdapter = new ModeListAdapter(data); + recyclerView.setAdapter(modeAdapter); + + recyclerView.addItemDecoration(new DividerItemDecoration(getBaseContext(), DividerItemDecoration.VERTICAL)); + } + + private void setRecyclerData(List data) { + data.add("Mode 1"); + for (int i = 2; i < 10; i++) { + data.add("Mode " + i); + } + data.add("Mode 1337"); } diff --git a/app/src/main/java/com/janasroboter/ModeListAdapter.java b/app/src/main/java/com/janasroboter/ModeListAdapter.java new file mode 100644 index 0000000..1406fc5 --- /dev/null +++ b/app/src/main/java/com/janasroboter/ModeListAdapter.java @@ -0,0 +1,77 @@ +package com.janasroboter; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import java.io.IOException; +import java.util.List; + +public class ModeListAdapter extends RecyclerView.Adapter { + + private List data; + + static class LineHolder extends RecyclerView.ViewHolder { + public TextView mode; + + + public LineHolder(View itemView) { + super(itemView); + + mode = itemView.findViewById(R.id.tv_mode); + } + } + + public ModeListAdapter(List data) { + this.data = data; + } + + public ModeListAdapter.LineHolder onCreateViewHolder(ViewGroup parent, int viewType) { + // Create a new view + View view = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.recycler_item, parent, false); + + return new LineHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull LineHolder holder, final int position) { + // Set the mode text + String text = data.get(position); + System.out.println("Username: " + text); + holder.mode.setText(text); + + // Set the click actions + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Thread t = new Thread(new Runnable() { + @Override + public void run() { + String msg = ""; + try { + // Aufruf mit Zahl an den Mikrocontroller senden + REST.getString(REST.URL + "/togglearg?state=" + (position + 1)); + // Erfolgsnachricht anpassen + } catch (IOException e) { + e.printStackTrace(); + } + } + }); + t.start(); + Toast.makeText(v.getContext(), "Setze auf Muster: " + (position + 1), Toast.LENGTH_LONG).show(); + } + }); + } + + @Override + public int getItemCount() { + return data.size(); + } + +} diff --git a/app/src/main/java/com/janasroboter/REST.java b/app/src/main/java/com/janasroboter/REST.java index d2e5518..aa2221a 100644 --- a/app/src/main/java/com/janasroboter/REST.java +++ b/app/src/main/java/com/janasroboter/REST.java @@ -17,6 +17,9 @@ public class REST { private static final MediaType MEDIA_TYPE_MP4 = MediaType.parse("video/mp4"); + public static final String URL = "http://192.168.4.1"; + + /** * Make a GET request to a url * @param url the url string diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 866042b..d166e0b 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -85,4 +85,15 @@ android:text="Singen" app:layout_constraintStart_toEndOf="@+id/textView" app:layout_constraintTop_toBottomOf="@+id/state" /> + + \ No newline at end of file diff --git a/app/src/main/res/layout/recycler_item.xml b/app/src/main/res/layout/recycler_item.xml new file mode 100644 index 0000000..029b1de --- /dev/null +++ b/app/src/main/res/layout/recycler_item.xml @@ -0,0 +1,18 @@ + + + + + \ No newline at end of file diff --git a/build.gradle b/build.gradle index 48947c3..d29fea0 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.5.1' + classpath 'com.android.tools.build:gradle:3.6.3' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ff7dc64..e55b026 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Wed Apr 15 23:02:08 CEST 2020 +#Sun Apr 26 20:33:59 CEST 2020 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip