Selamat malam, sudah lama tidak posting, karena sibuk ni dengan kegiatan sehari-hari. Pada postingan kali ini, saya akan membagikan sebuah tutorial yang mungkin belum anda ketahui bagaimana cara membuatnya, yaitu ,membuat swipe refresh yang list nya ditarik kebawah akan merefresh ulang kontent didalam listview android.
Sebelum mengikuti lebih lanjut tutorial ini, sebaiknya pastikan pada folder libs sudah ada android-support-v4.jar, biasanya sudah ada jika kita buat project baru.

activity_main.xml
1 2 3 4 5 6 7 8 9 10 11 12 | < android.support.v4.widget.SwipeRefreshLayout xmlns:android = "http://schemas.android.com/apk/res/android" android:id = "@+id/swipe_view" android:layout_width = "match_parent" android:layout_height = "wrap_content" > < ListView android:id = "@+id/listView" android:layout_width = "fill_parent" android:layout_height = "wrap_content" > </ ListView > </ android.support.v4.widget.SwipeRefreshLayout > |
list_item.xml
1 2 3 4 5 6 7 | android:id = "@+id/text1" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:padding = "7dp" android:textSize = "14dp" android:textColor = "@android:color/white" /> |
MainActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | package com.example.swiftrefresh; import java.util.Arrays; import java.util.List; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.os.Handler; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v4.widget.SwipeRefreshLayout.OnRefreshListener; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast; public class MainActivity extends Activity implements OnRefreshListener { private SwipeRefreshLayout swipeView; private ListView listView; private ArrayAdapter< String > adapter; private String [] LIST_COUNTRY = { "Indonesia" , "Malaysia" , "India" , "Filiphina" , "Thailand" , "Inggris" , "Jerman" , "Kanada" , "Argentina" , "Saudi Arabia" , "Afganistan" , "Japan" , "Korea Selatan" , "China" , "Australia" , "Netherland" }; private String [] LIST_COUNTRY_MORE = { "Indonesia" , "Malaysia" , "India" , "Filiphina" , "Thailand" , "Inggris" , "Jerman" , "Kanada" , "Argentina" , "Saudi Arabia" , "Afganistan" , "Japan" , "Korea Selatan" , "China" , "Australia" , "Netherland" , "Laos" , "Brunei Darussalam" , "Vietnam" , "Mesir" , "Turki" }; private List< String > cityList; // variable to toggle city values on refresh boolean refreshToggle = true ; @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); swipeView = (SwipeRefreshLayout) findViewById(R.id.swipe_view); swipeView.setOnRefreshListener( this ); swipeView.setColorSchemeColors(Color.GRAY, Color.GREEN, Color.BLUE, Color.RED, Color.CYAN); swipeView.setDistanceToTriggerSync( 50 ); // in dips swipeView.setSize(SwipeRefreshLayout.DEFAULT); // LARGE also can be used cityList = Arrays.asList(LIST_COUNTRY); listView = (ListView) findViewById(R.id.listView); adapter = new ArrayAdapter< String >(getApplicationContext(), R.layout.list_item, cityList); listView.setAdapter(adapter); listView.requestLayout(); } Handler handler = new Handler() { public void handleMessage(android.os.Message msg) { if (refreshToggle) { refreshToggle = false ; cityList = Arrays.asList(LIST_COUNTRY_MORE); adapter = new ArrayAdapter< String >(getApplicationContext(), R.layout.list_item, cityList); } else { refreshToggle = true ; cityList = Arrays.asList(LIST_COUNTRY); adapter = new ArrayAdapter< String >(getApplicationContext(), R.layout.list_item, cityList); } listView.setAdapter(adapter); swipeView.postDelayed( new Runnable() { @Override public void run() { Toast.makeText(getApplicationContext(), "city list refreshed" , Toast.LENGTH_SHORT).show(); swipeView.setRefreshing( false ); } }, 1000 ); }; }; @Override public void onRefresh() { swipeView.postDelayed( new Runnable() { @Override public void run() { swipeView.setRefreshing( true ); handler.sendEmptyMessage( 0 ); } }, 1000 ); } } |
No comments:
Post a Comment