Android Pull to Refresh

Android kullanıcıların işlerini kolaylaştırmak ve görselliği ilgi çekici yapmak adına bazı ara yüz(UI) kütüphaneleri kullanılmaktadır. Bu arayüz kütüphanelerinden biride “Pull to Refresh” dir.

“Pull to Refresh” özeliği, uygulandığı arayüzde çekip bırakma hareketi yapılarak sayfanın yenilenme işlemini sağlayan UI kütüphanesidir. Gmail, Facebook, Twitter gibi birçok android uygulamaları, bu özelliği kullanmaktadır. Pull to Refresh işlemini merak ettiğinizi duyar gibiyim. Uygulanması çok basit bir kütüphane..:) Bu özeliği arayüzüne uygulamanızı kolaylaştırmak için, sizin için bu makaleyi yazdım.Bu makalemde arayüzle ilgili birçok Android yazılımcılarının kullandığı “Pull to Refresh” olayını listview arayüz bileşeniyle birlikte kullanmayı örnekleyeceğim.
123

İlk öncelikle “actionbarpulltorefresh” adlı kütüphanemizi yükleyelim. Android Studio Ide’sinde oluşturmuş olduğum projemde, proje ana dizi->app->build.gradle dosyasını açıp, dependencies kodları arasına compile ‘com.github.chrisbanes.actionbarpulltorefresh:library:+’ kodunu ekliyip, menude Build sekmesinden Rebuild Project yaptık.

build.gradle kodları:

[php]
dependencies {
compile fileTree(dir: ‘libs’, include: [‘*.jar’])
compile ‘com.android.support:appcompat-v7:21.0.3’
compile ‘com.github.chrisbanes.actionbarpulltorefresh:library:+’
compile ‘com.android.support:support-v4:21.0.3’
}
[/php]

activity_main.xml kodları:

[php]



[/php]

MainActivity.java kodları:
[php]
package com.tugbaustundag.pull_to_refresh;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;

public class MainActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Listview olusturuldugu ve Pull to refresh in uygulandıgı, ListViewActivity sınıfına yönlendirme yaptık

ListViewActivity listViewActivity = new ListViewActivity();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.realtabcontent, listViewActivity);
transaction.commit();
}

}
[/php]

ListViewActivity.java kodları:
[php]
package com.tugbaustundag.pull_to_refresh;
import java.util.ArrayList;
import java.util.List;
import uk.co.senab.actionbarpulltorefresh.library.ActionBarPullToRefresh;
import uk.co.senab.actionbarpulltorefresh.library.PullToRefreshLayout;
import uk.co.senab.actionbarpulltorefresh.library.listeners.OnRefreshListener;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;

public class ListViewActivity extends ListFragment implements OnRefreshListener
{
int i=0;
private PullToRefreshLayout mPullToRefreshLayout;
ArrayAdapter adapter;
List list;

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
//Listview göstermek amaçlı, ArrayList ‘e Item’lar atadık
list=new ArrayList();
int no=1;
for(int i=0;i<5;i++) { list.add("Item No :"+no++); } ViewGroup viewGroup = (ViewGroup) view; //PullToRefreshLayout sınıfını tanımladık.PullToRefreshLayout sınıfı refresh olayını yapan kütüphanedir mPullToRefreshLayout = new PullToRefreshLayout(viewGroup.getContext()); //PullToRefreshLayout sınıfıyla ilgili ilgili ayarları yapıyoruz. ActionBarPullToRefresh.from(getActivity()) //Fragment ViewGroup icine PullToRefreshLayout^'u dahil ettik .insertLayoutInto(viewGroup) .theseChildrenArePullable(android.R.id.list, android.R.id.empty) .listener(this) .setup(mPullToRefreshLayout); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); //onViewCreated metodunun içinde, ArrayList 'te oluşturdgumuz listeyi ArrayAdapter'a atadık. adapter=new ArrayAdapter(getActivity(),android.R.layout.simple_list_item_1, list);
setListAdapter(adapter);
setListShownNoAnimation(true);//Listelemedeki Yükleniyor animasyonunu pasif yaptım
}

@Override
public void onRefreshStarted(View view) {
//Listeleme alanını çekip bıraktığınızda ,listeleme alananında Round progress bar(Yuvarlak yükleniyor iconu)
// görmek istiyosanız, bu kodun yorum taglerini kaldırmalısınız
// setListShown(false);

//Listeleme alanı çekip bıraktığınızda, yeni verinin gösterilmesini sağlayan kod bölümü

new AsyncTask() {

@Override
protected Void doInBackground(Void… params) {
try {
//Loading işleminden sonra yeni bir data gösterilmesi işlemi icin ,listview Item eklendi
Thread.sleep(5000);
int itemNo=list.size();
itemNo++;
list.add(“New Item No :”+itemNo);

} catch (InterruptedException e) {
e.printStackTrace();
}
return null;
}

@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);

adapter.notifyDataSetChanged();
// Notify PullToRefreshLayout sınıfının yenilenme işleminin bittiğini anlatan metodu set ettim
mPullToRefreshLayout.setRefreshComplete();

// Üstte “setListShown(false)” kodunu aktif yaptıysanız,asagıdaki kodunda yorum tag lerini kaldırmalısınız

/* if (getView() != null) {
setListShown(true);
}*/
}
}.execute();
}
}

[/php]

Kategori Genel
Etiketler