Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
111 changes: 85 additions & 26 deletions README.md
Original file line number Diff line number Diff line change
@@ -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.
```
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
```

## Följande grundsyn gäller dugga-svar:
En ny xml fill lades till för att visa hur elementen i recyclerview ska se ut.
```
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="10dp">

- 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).
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"/>

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.
</LinearLayout>
```

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<Mountain> 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<ArrayList<Mountain>>() {}.getType();
ArrayList<Mountain> listOfMountains = gson.fromJson(json, type);

![](android.png)
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.
![](Screenshot_Networking.png)
Binary file added Screenshot_Networking.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 2 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
37 changes: 36 additions & 1 deletion app/src/main/java/com/example/networking/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -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<Mountain> 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<ArrayList<Mountain>>() {}.getType();
ArrayList<Mountain> listOfMountains = gson.fromJson(json, type);

recViewAdapter.updateAdapter(listOfMountains);
recViewAdapter.notifyDataSetChanged();
}

}
49 changes: 49 additions & 0 deletions app/src/main/java/com/example/networking/Mountain.java
Original file line number Diff line number Diff line change
@@ -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 +
'}';
}
}
54 changes: 54 additions & 0 deletions app/src/main/java/com/example/networking/RecyclerViewAdapter.java
Original file line number Diff line number Diff line change
@@ -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<RecyclerViewAdapter.ViewHolder> {

private List<Mountain> items;
private LayoutInflater layoutInflater;

RecyclerViewAdapter(Context context, List<Mountain> 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<Mountain> newItems){
items.addAll(newItems);
}

}
8 changes: 4 additions & 4 deletions app/src/main/res/layout/activity_main.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@
android:layout_height="match_parent"
tools:context=".MainActivity">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
Expand Down
14 changes: 14 additions & 0 deletions app/src/main/res/layout/list_layout.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="10dp">

<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"/>

</LinearLayout>