Mengirim Jsonobject Ke Activity Lain Mengunakan Intent

Hai sobat, pada artikel kemarin yang berjudul Mengatur RecyclerView ItemClick Listener, telah ditunjukkan cara memperlihatkan perintah click listener yang sebetulnya tidak ada pada bjek RecyclerView. Dan di artikle kali ini akan dijelaskan cara mengirimkan JSONObjek ke activity lain memakai intent..



Mungkin pada artikel sebelumnya aku telah menulis artikel tutorial android yang sebetulnya di dalamnya terdapat fungsi mengirim objek dari activity lain memakai intent. Tapi jikalau objek yang inigin kita kirim yaitu objek dari JSON? Praktis saja, dengan memakai intent putextra, kita sanggup mengirimkannya ke activity yang kita mau.

Penggunaanya hampir sama dengan intent putextra lainya, hanya saja objek yang akan kita kirim kita panggil terlebih dahulu pada activity sebelumnya dan selanjutnya tinggal kita ambil ketika activity berpindah. Untuk lebh jelasnya teman sanggup lihat langkah-langkah di bawah ini

Baca juga "Cara Memasang Musik di Blog"

Pada arikel kemarin kita telah menambahkan perintah ketika RecyclerView diklik, dan kini kita akan melanjutkanya supaya lebih mudah. Silahkan teman buka link berikut jikalau belum menciptakan project pada artikel sebelumnya. (Tutorial Android dengan Retrofit HTTP Library)

Nah untuk membuatnya, pertama buka project RetrofitHTTPLybrary, sehabis itu tambahkan activity gres dengan nama DetailActivity

Buka MainActivity.java, masukkan isyarat berikut ini di dalam perintah onItemTouchListener

 Intent i = new Intent(MainActivity.this, DetailActivity.class); i.putExtra("title", movies.get(position).getTitle()); i.putExtra("date", movies.get(position).getReleaseDate()); i.putExtra("vote", movies.get(position).getVoteAverage().toString()); i.putExtra("overview", movies.get(position).getOverview()); i.putExtra("bg", movies.get(position).getPosterPath()); MainActivity.this.startActivity(i); 


Keseluruhan dari MainActivity akan nampak menyerupai berikut ini

 package com.blogsetyaaji.retrofithttplibrary;  import android.content.Context; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.GestureDetector; import android.view.MotionEvent; import android.view.View; import android.widget.Toast;  import com.blogsetyaaji.retrofithttplibrary.Adapter.MoviesAdapter; import com.blogsetyaaji.retrofithttplibrary.Model.Movie; import com.blogsetyaaji.retrofithttplibrary.Model.MovieResponse; import com.blogsetyaaji.retrofithttplibrary.Rest.ApiClient; import com.blogsetyaaji.retrofithttplibrary.Rest.ApiInterface;  import java.util.List;  import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response;  public class MainActivity extends AppCompatActivity {      private static tamat String TAG = MainActivity.class.getSimpleName();      // TODO - insert your themoviedb.org API KEY here     private tamat static String API_KEY = "e5013e88aad0bad4821bdac93d1d6a30";      @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);          if (API_KEY.isEmpty()) {             Toast.makeText(getApplicationContext(), "Please obtain your API KEY first from themoviedb.org", Toast.LENGTH_LONG).show();             return;         }          tamat RecyclerView recyclerView = (RecyclerView) findViewById(R.id.movie_recycler);         recyclerView.setLayoutManager(new LinearLayoutManager(this));          ApiInterface apiService =                 ApiClient.getClient().create(ApiInterface.class);          Call<MovieResponse> call = apiService.getTopRatedMovies(API_KEY);         call.enqueue(new Callback<MovieResponse>() {             @Override             public void onResponse(Call<MovieResponse>call, Response<MovieResponse> response) {                 tamat List<Movie> movies = response.body().getResults();                 Log.d(TAG, "Number of movies received: " + movies.size());                 Toast.makeText(MainActivity.this, "Number of movies received: " + movies.size(), Toast.LENGTH_LONG).show();                 recyclerView.setAdapter(new MoviesAdapter(movies, R.layout.list_item_movie, getApplicationContext()));                  /*perintah klik recyclerview*/                 recyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {                     GestureDetector gestureDetector = new GestureDetector(getApplicationContext(), new GestureDetector.SimpleOnGestureListener() {                          public boolean onSingleTapUp(MotionEvent e){                             return true;                         }                     });                      @Override                     public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {                         View child = rv.findChildViewUnder(e.getX(), e.getY());                         if (child != null && gestureDetector.onTouchEvent(e)){                             int position = rv.getChildAdapterPosition(child);                             Toast.makeText(getApplicationContext(), "Id : " + movies.get(position).getId() + " selected", Toast.LENGTH_SHORT).show();                              Intent i = new Intent(MainActivity.this, DetailActivity.class);                             i.putExtra("title", movies.get(position).getTitle());                             i.putExtra("date", movies.get(position).getReleaseDate());                             i.putExtra("vote", movies.get(position).getVoteAverage().toString());                             i.putExtra("overview", movies.get(position).getOverview());                             i.putExtra("bg", movies.get(position).getPosterPath());                             MainActivity.this.startActivity(i);                          }                         return false;                     }                      @Override                     public void onTouchEvent(RecyclerView rv, MotionEvent e) {                      }                      @Override                     public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {                      }                 });             }              @Override             public void onFailure(Call<MovieResponse>call, Throwable t) {                 // Log error here since request failed                 Log.e(TAG, t.toString());             }         });      } } 
 

Di dalam isyarat MainActivity tersebut, terdapat isyarat Intent dimana ia mengirimkan objek JSON dengan memanggil variablenya. Selanjutnya kita buat tampilan pada activity detail, di dalamnya kita akan menampilkan data lebih di dalamnya menyerupai gambar, judul, deskripsi dll. untuk membuatnya, pada activity_detail.xml, atur layoutnya menyerupai berikut ini

 <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="match_parent"     tools:context="com.blogsetyaaji.retrofithttplibrary.DetailActivity">      <LinearLayout         android:id="@+id/lay1"         android:layout_width="match_parent"         android:layout_height="match_parent"         android:orientation="vertical">          <ImageView             android:id="@+id/bg"             android:layout_width="match_parent"             android:layout_height="300dp"             android:layout_gravity="center_horizontal"             android:background="#000" />          <android.support.v7.widget.CardView             android:layout_width="match_parent"             android:layout_height="wrap_content"             android:layout_marginTop="10dp">              <RelativeLayout                 android:layout_width="match_parent"                 android:layout_height="match_parent"                 android:layout_margin="10dp">                  <LinearLayout                     android:id="@+id/lay2"                     android:layout_width="match_parent"                     android:layout_height="match_parent"                     android:orientation="vertical">                      <TextView                         android:id="@+id/txtTitle"                         android:layout_width="wrap_content"                         android:layout_height="wrap_content"                         android:text="Title"                         android:textSize="24sp"                         android:textStyle="bold" />                      <TextView                         android:id="@+id/txtDate"                         android:layout_width="wrap_content"                         android:layout_height="wrap_content"                         android:text="ID"                         android:textSize="18sp" />                  </LinearLayout>                  <LinearLayout                     android:layout_width="wrap_content"                     android:layout_height="35dp"                     android:layout_alignParentRight="true"                     android:gravity="center_vertical"                     android:orientation="horizontal">                      <ImageView                         android:id="@+id/rating_image"                         android:layout_width="25dp"                         android:layout_height="25dp"                         android:layout_centerInParent="true"                         android:scaleType="centerCrop"                         android:src="@drawable/star"                         android:tint="@color/colorAccent" />                       <TextView                         android:id="@+id/txtrating"                         android:layout_width="wrap_content"                         android:layout_height="wrap_content"                         android:layout_marginLeft="8dp"                         android:text="5.0"                         android:textSize="20sp" />                  </LinearLayout>                  <TextView                     android:id="@+id/txtDescrip"                     android:layout_width="wrap_content"                     android:layout_height="match_parent"                     android:layout_below="@id/lay2"                     android:layout_marginLeft="3dp"                     android:layout_marginRight="3dp"                     android:layout_marginTop="10dp"                     android:text="Description" />              </RelativeLayout>         </android.support.v7.widget.CardView>        </LinearLayout>  </ScrollView> 
 

Jika sudah, selanjutnya berpindah ke DetailActivity.java dan buat kodenya menyerupai berikut ini

 package com.blogsetyaaji.retrofithttplibrary;  import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ImageView; import android.widget.TextView;  import com.squareup.picasso.Picasso;  import org.w3c.dom.Text;  public class DetailActivity extends AppCompatActivity {      public TextView txtTitle, txtoverview, txtdate, txtvote;     public ImageView bg;      @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_detail);          txtTitle = (TextView) findViewById(R.id.txtTitle);         txtTitle.setText(getIntent().getStringExtra("title"));          txtdate = (TextView) findViewById(R.id.txtDate);         txtdate.setText(getIntent().getStringExtra("date"));          txtoverview = (TextView) findViewById(R.id.txtDescrip);         txtoverview.setText(getIntent().getStringExtra("overview"));          txtvote = (TextView) findViewById(R.id.txtrating);         txtvote.setText(getIntent().getStringExtra("vote"));          bg = (ImageView) findViewById(R.id.bg);         Picasso.with(this)                 .load("https://image.tmdb.org/t/p/w300_and_h450_bestv2" + getIntent().getStringExtra("bg"))                 .resize(200, 300)                 .into(bg);     } } 
 

Pada isyarat di atas, DetaiActivity akan mendapatkan kiriman dari activity sebelumnya  dengan isyarat getStringExtra kemudian berubah objek pada activity Detai sesuai dengan nilai variable pada Json.

Untuk menciptakan supaya tampilanya lebih manis dan kegunaanya makin bagus, kita tambahkan tombol kembali di sebelah kiri pojok. Caranya sangat gampang sekali, hanya dengan membuka AndroidManifest.xml dan tambahkan isyarat parent di dalam tag application menyerupai berikut ini

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"     package="com.blogsetyaaji.retrofithttplibrary">      <uses-permission android:name="android.permission.INTERNET" />      <application         android:allowBackup="true"         android:icon="@mipmap/ic_launcher"         android:label="@string/app_name"         android:supportsRtl="true"         android:theme="@style/AppTheme">         <activity android:name=".MainActivity">             <intent-filter>                 <action android:name="android.intent.action.MAIN" />                  <category android:name="android.intent.category.LAUNCHER" />             </intent-filter>         </activity>         <activity android:name=".DetailActivity"             android:parentActivityName=".MainActivity"></activity>     </application>  </manifest> 


Jika sudah, jalankan aplikasinya dengan menentukan hidangan Run 'app', mkaa tampilanya akan menyerupai berikut ini



Dan itu lha cara mengirim objek JSON ke activity lain.
Sekian artikel tentang Mengirim JSONObject ke Activity Lain Mengunakan Intent, semoga bermanfaat.



0 Komentar untuk "Mengirim Jsonobject Ke Activity Lain Mengunakan Intent"

Back To Top