diff --git a/README.md b/README.md
index bdd11c8b..3d237c6f 100644
--- a/README.md
+++ b/README.md
@@ -1,42 +1,101 @@
# Rapport
-**Skriv din rapport här!**
+Detta är rapporten för Networking
-_Du kan ta bort all text som finns sedan tidigare_.
+I activity_main.xml lade det till en recyclerview.
+```
+
+```
-## Följande grundsyn gäller dugga-svar:
+En ny xml fill lades till för att visa hur elementen i recyclerview ska se ut.
+```
+
+
-- Ett kortfattat svar är att föredra. Svar som är längre än en sida text (skärmdumpar och programkod exkluderat) är onödigt långt.
-- Svaret skall ha minst en snutt programkod.
-- Svaret skall inkludera en kort övergripande förklarande text som redogör för vad respektive snutt programkod gör eller som svarar på annan teorifråga.
-- Svaret skall ha minst en skärmdump. Skärmdumpar skall illustrera exekvering av relevant programkod. Eventuell text i skärmdumpar måste vara läsbar.
-- I de fall detta efterfrågas, dela upp delar av ditt svar i för- och nackdelar. Dina för- respektive nackdelar skall vara i form av punktlistor med kortare stycken (3-4 meningar).
+
-Programkod ska se ut som exemplet nedan. Koden måste vara korrekt indenterad då den blir lättare att läsa vilket gör det lättare att hitta syntaktiska fel.
+
+```
+Mountain class var skapad and given geters and seters.
```
-function errorCallback(error) {
- switch(error.code) {
- case error.PERMISSION_DENIED:
- // Geolocation API stöds inte, gör något
- break;
- case error.POSITION_UNAVAILABLE:
- // Misslyckat positionsanrop, gör något
- break;
- case error.UNKNOWN_ERROR:
- // Okänt fel, gör något
- break;
+public class Mountain {
+
+ private String name;
+ @SerializedName("location")
+ private String place;
+ @SerializedName("size")
+ private int hight;
+
+ public Mountain(String name){
+ this.name = name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+```
+
+I mainActivity.java sättes en arraylist av mountains, RecyclerViewAdaptern skapades
+och recView sates som RecyclerView.
+```
+Mountains = new ArrayList<>(Arrays.asList(
+ new Mountain("Billigen"),
+ new Mountain("Mount Everest"),
+ new Mountain("Uluru")
+));
+
+recViewAdapter = new RecyclerViewAdapter(this, Mountains);
+
+recView = findViewById(R.id.recycler_view);
+recView.setLayoutManager(new LinearLayoutManager(this));
+recView.setAdapter(recViewAdapter);
+```
+
+RecycelViewAdapter.java kopierades från guiden och allt om onclick togs bort
+och en update metod skapades.
+```
+public class ViewHolder extends RecyclerView.ViewHolder {
+ TextView title;
+
+ ViewHolder(View itemView) {
+ super(itemView);
+ title = itemView.findViewById(R.id.title);
}
}
+
+public void updateAdapter(ArrayList newItems){
+ items.addAll(newItems);
+}
+
```
-Bilder läggs i samma mapp som markdown-filen.
+Till sista så lades det till i onPostExecute i mainActivity.java så bergen från JSON mappen
+läggs till i listan av berg.
+```
+Type type = new TypeToken>() {}.getType();
+ArrayList listOfMountains = gson.fromJson(json, type);
-
+recViewAdapter.updateAdapter(listOfMountains);
+recViewAdapter.notifyDataSetChanged();
+```
-Läs gärna:
+på grund av firewall så gorde jag inte JSON hämtningen från websidan.
-- Boulos, M.N.K., Warren, J., Gong, J. & Yue, P. (2010) Web GIS in practice VIII: HTML5 and the canvas element for interactive online mapping. International journal of health geographics 9, 14. Shin, Y. &
-- Wunsche, B.C. (2013) A smartphone-based golf simulation exercise game for supporting arthritis patients. 2013 28th International Conference of Image and Vision Computing New Zealand (IVCNZ), IEEE, pp. 459–464.
-- Wohlin, C., Runeson, P., Höst, M., Ohlsson, M.C., Regnell, B., Wesslén, A. (2012) Experimentation in Software Engineering, Berlin, Heidelberg: Springer Berlin Heidelberg.
+
diff --git a/Screenshot_Networking.png b/Screenshot_Networking.png
new file mode 100644
index 00000000..ef687585
Binary files /dev/null and b/Screenshot_Networking.png differ
diff --git a/app/build.gradle b/app/build.gradle
index ff9c03db..ae747f29 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -29,6 +29,8 @@ dependencies {
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.google.code.gson:gson:2.9.0'
+ implementation 'androidx.recyclerview:recyclerview:1.2.1'
+ implementation 'com.google.code.gson:gson:2.10.1'
}
task archive(type: Zip) {
diff --git a/app/src/main/java/com/example/networking/MainActivity.java b/app/src/main/java/com/example/networking/MainActivity.java
index c72a5e42..d4f21bc1 100644
--- a/app/src/main/java/com/example/networking/MainActivity.java
+++ b/app/src/main/java/com/example/networking/MainActivity.java
@@ -4,24 +4,59 @@
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.Arrays;
@SuppressWarnings("FieldCanBeLocal")
public class MainActivity extends AppCompatActivity implements JsonTask.JsonTaskListener {
- private final String JSON_URL = "HTTPS_URL_TO_JSON_DATA_CHANGE_THIS_URL";
+ private final String JSON_URL = "https://mobprog.webug.se/json-api?login=brom";
private final String JSON_FILE = "mountains.json";
+ private ArrayList Mountains;
+
+ private RecyclerView recView;
+ private RecyclerViewAdapter recViewAdapter;
+
+ private Gson gson = new Gson();
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
+ Mountains = new ArrayList<>(Arrays.asList(
+ new Mountain("Billigen"),
+ new Mountain("Mount Everest"),
+ new Mountain("Uluru")
+ ));
+
+ recViewAdapter = new RecyclerViewAdapter(this, Mountains);
+
+ recView = findViewById(R.id.recycler_view);
+ recView.setLayoutManager(new LinearLayoutManager(this));
+ recView.setAdapter(recViewAdapter);
+
new JsonFile(this, this).execute(JSON_FILE);
+
+
}
@Override
public void onPostExecute(String json) {
Log.d("MainActivity", json);
+ Type type = new TypeToken>() {}.getType();
+ ArrayList listOfMountains = gson.fromJson(json, type);
+
+ recViewAdapter.updateAdapter(listOfMountains);
+ recViewAdapter.notifyDataSetChanged();
}
}
diff --git a/app/src/main/java/com/example/networking/Mountain.java b/app/src/main/java/com/example/networking/Mountain.java
new file mode 100644
index 00000000..cf75ede7
--- /dev/null
+++ b/app/src/main/java/com/example/networking/Mountain.java
@@ -0,0 +1,49 @@
+package com.example.networking;
+
+import com.google.gson.annotations.SerializedName;
+
+public class Mountain {
+
+ private String name;
+ @SerializedName("location")
+ private String place;
+ @SerializedName("size")
+ private int hight;
+
+ public Mountain(String name){
+ this.name = name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public void setPlace(String place) {
+ this.place = place;
+ }
+
+ public void setHight(int hight) {
+ this.hight = hight;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getPlace() {
+ return place;
+ }
+
+ public int getHight() {
+ return hight;
+ }
+
+ @Override
+ public String toString() {
+ return "Mountain{" +
+ "Name='" + name + '\'' +
+ ", Place='" + place + '\'' +
+ ", Hight=" + hight +
+ '}';
+ }
+}
diff --git a/app/src/main/java/com/example/networking/RecyclerViewAdapter.java b/app/src/main/java/com/example/networking/RecyclerViewAdapter.java
new file mode 100644
index 00000000..006567aa
--- /dev/null
+++ b/app/src/main/java/com/example/networking/RecyclerViewAdapter.java
@@ -0,0 +1,54 @@
+package com.example.networking;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+public class RecyclerViewAdapter extends RecyclerView.Adapter {
+
+ private List items;
+ private LayoutInflater layoutInflater;
+
+ RecyclerViewAdapter(Context context, List items) {
+ this.layoutInflater = LayoutInflater.from(context);
+ this.items = items;
+ }
+
+ @Override
+ @NonNull
+ public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ return new ViewHolder(layoutInflater.inflate(R.layout.list_layout, parent, false));
+ }
+
+ @Override
+ public void onBindViewHolder(ViewHolder holder, int position) {
+ holder.title.setText(items.get(position).getName());
+ }
+
+ @Override
+ public int getItemCount() {
+ return items.size();
+ }
+
+ public class ViewHolder extends RecyclerView.ViewHolder {
+ TextView title;
+
+ ViewHolder(View itemView) {
+ super(itemView);
+ title = itemView.findViewById(R.id.title);
+ }
+ }
+
+ public void updateAdapter(ArrayList newItems){
+ items.addAll(newItems);
+ }
+
+}
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 4fc24441..702e6531 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -6,10 +6,10 @@
android:layout_height="match_parent"
tools:context=".MainActivity">
-
+
+
+
+
+
\ No newline at end of file