Skip to content

Instantly share code, notes, and snippets.

@malikkurosaki
Created June 23, 2019 10:48
Show Gist options
  • Save malikkurosaki/43647a7ef2916fa5a5e07a0354203a87 to your computer and use it in GitHub Desktop.
Save malikkurosaki/43647a7ef2916fa5a5e07a0354203a87 to your computer and use it in GitHub Desktop.
convert retrofit to hasmap

retrofit to hasmap

package com.fahmyuliono.bismillah;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.widget.Toast;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.iid.FirebaseInstanceId;
import com.google.firebase.iid.InstanceIdResult;
import com.google.firebase.messaging.FirebaseMessaging;
import com.google.gson.Gson;
import com.google.gson.JsonObject;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class MainActivity extends AppCompatActivity {

    private String TAG = "-->";
    private RecyclerView container1;

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

        FirebaseMessaging.getInstance().subscribeToTopic("berita");
        container1 = findViewById(R.id.conteiner1);

        Retrofit retrofit = new Retrofit.Builder()
                .addConverterFactory(GsonConverterFactory.create())
                .baseUrl("https://kitasehat.herokuapp.com/")
                .build();

        PemanggilApi pemanggilApi = retrofit.create(PemanggilApi.class);
        Call<List<JsonObject>> terima = pemanggilApi.contennya();
        terima.enqueue(new Callback<List<JsonObject>>() {
            @Override
            public void onResponse(Call<List<JsonObject>> call, Response<List<JsonObject>> response) {
                List<JsonObject> wadah = response.body();
                List<Map<String,Object>> terima = new ArrayList<>();
                for (JsonObject pecahan1 : wadah){
                    Map<String,Object> maka = new Gson().fromJson(pecahan1.toString(),HashMap.class);
                    Map<String,Object> tr = new HashMap<>();
                    for (Map.Entry<String,Object> entry : maka.entrySet()){
                        tr.put(entry.getKey(),entry.getValue());
                    }

                    terima.add(tr);
                }

                MyRecyclerAdapter  myRecyclerAdapter = new MyRecyclerAdapter(MainActivity.this,terima);
                container1.setLayoutManager(new LinearLayoutManager(MainActivity.this,RecyclerView.VERTICAL,true));
                container1.setAdapter(myRecyclerAdapter);
                container1.smoothScrollToPosition(terima.size()-1);

                myRecyclerAdapter.setKetikaBeritaDiKlick(new MyRecyclerAdapter.KetikaBeritaDiKlick() {
                    @Override
                    public void maka(View view, int posisi) {
                        Toast.makeText(getApplicationContext(),String.valueOf(posisi),Toast.LENGTH_SHORT).show();
                    }
                });

            }

            @Override
            public void onFailure(Call<List<JsonObject>> call, Throwable t) {

            }
        });
    }


}

interface

package com.fahmyuliono.bismillah;

import com.google.gson.JsonObject;

import java.util.List;
import java.util.Map;

import retrofit2.Call;
import retrofit2.http.GET;

public interface PemanggilApi {

    @GET("/api/content")
    Call<List<JsonObject>> contennya();
}

adapter

package com.fahmyuliono.bismillah;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import java.util.List;
import java.util.Map;

public class MyRecyclerAdapter extends RecyclerView.Adapter<MyRecyclerAdapter.VHolder> {

    private List<Map<String,Object>> mapList;
    private LayoutInflater inflater;
    private KetikaBeritaDiKlick ketikaBeritaDiKlick;

    public MyRecyclerAdapter(Context context, List<Map<String, Object>> list){
        this.inflater = LayoutInflater.from(context);
        this.mapList = list;
    }

    @NonNull
    @Override
    public VHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        return new VHolder(inflater.inflate(R.layout.layout_berita,parent,false));
    }

    @Override
    public void onBindViewHolder(@NonNull VHolder holder, int position) {
        Map<String,Object> terima = mapList.get(position);

        holder.judulnya.setText(String.valueOf(terima.get("judul")));
        holder.isinya.setText(String.valueOf(terima.get("isi")));
    }

    @Override
    public int getItemCount() {
        return mapList.size();
    }

    class VHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
        private TextView judulnya;
        private ImageView gambarnya;
        private TextView isinya;

        VHolder(@NonNull View itemView) {
            super(itemView);

            judulnya = itemView.findViewById(R.id.judul);
            gambarnya = itemView.findViewById(R.id.gambar);
            isinya = itemView.findViewById(R.id.isi);

            itemView.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {
            ketikaBeritaDiKlick.maka(v,getAdapterPosition());
        }
    }

    private String getId(int pos){
        return String.valueOf(mapList.get(pos));
    }

    public void setKetikaBeritaDiKlick(KetikaBeritaDiKlick ketikaBeritaDiKlick) {
        this.ketikaBeritaDiKlick = ketikaBeritaDiKlick;
    }

    interface KetikaBeritaDiKlick{
        void maka(View view,int posisi);
    }

}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment