2013-05-21 27 views
23

Android uygulaması için çalışıyorum. Listede liste görünümü göstermem gerekiyor. Ama liste görünümünde gösterilecek daha fazla öğe var.Android liste görünümünde sayfalandırma nasıl gerçekleştirilir?

Sayfalandırmayı uygulamaya karar verdim. Google’da arama yapmayı denedim, ancak ilgili herhangi bir bilgi bulamadı. sayfalandırma uygulanması

kimse bana lütfen yardımcı olabilir

..

+0

Ne tür bir gezinme? Eğer liste öğesi tıkladıktan sonra aktiviteyi oluşturabilirsin – stinepike

+0

benim hatam için üzülsün. Düzenlenmiş soruları kontrol et .. – Naveen

+1

CommonWare'ın ['EndlessAdapter'] (https://github.com/commonsguy/cwac-endless) yaygın olarak kullanılan bir yaklaşımdır. listeleri listelemek için. Alternatif olarak, sayfalandırma mantığını kendiniz uygulayabilir veya ör. Bir sayfadan diğerine geçmek için –

cevap

24

çok basittir.

şuna alın bakış ...

public class MainActivity extends Activity { 

    private ListView listview; 
    private TextView title; 

    private ArrayList<String> data; 
    ArrayAdapter<String> sd; 


    public int TOTAL_LIST_ITEMS = 1030; 
    public int NUM_ITEMS_PAGE = 100; 
    private int noOfBtns; 
    private Button[] btns; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     listview = (ListView)findViewById(R.id.list); 
     title = (TextView)findViewById(R.id.title); 

     Btnfooter(); 

     data = new ArrayList<String>(); 

     /* 
     * The ArrayList data contains all the list items 
     */ 
     for(int i=0;i<TOTAL_LIST_ITEMS;i++) 
     { 
      data.add("This is Item "+(i+1)); 
     } 

     loadList(0); 

     CheckBtnBackGroud(0); 

    } 

    private void Btnfooter() 
    { 
     int val = TOTAL_LIST_ITEMS%NUM_ITEMS_PAGE; 
     val = val==0?0:1; 
     noOfBtns=TOTAL_LIST_ITEMS/NUM_ITEMS_PAGE+val; 

     LinearLayout ll = (LinearLayout)findViewById(R.id.btnLay); 

     btns = new Button[noOfBtns]; 

     for(int i=0;i<noOfBtns;i++) 
     { 
      btns[i] = new Button(this); 
      btns[i].setBackgroundColor(getResources().getColor(android.R.color.transparent)); 
      btns[i].setText(""+(i+1)); 

      LinearLayout.LayoutParams lp = new  LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
      ll.addView(btns[i], lp); 

      final int j = i; 
      btns[j].setOnClickListener(new OnClickListener() { 

       public void onClick(View v) 
       { 
        loadList(j); 
        CheckBtnBackGroud(j); 
       } 
      }); 
     } 

    } 

    /** 
    * Method for Checking Button Backgrounds 
    */ 
    private void CheckBtnBackGroud(int index) 
    { 
     title.setText("Page "+(index+1)+" of "+noOfBtns); 
     for(int i=0;i<noOfBtns;i++) 
     { 
      if(i==index) 
      { 
       btns[index].setBackgroundDrawable(getResources().getDrawable(R.drawable.box_green)); 
       btns[i].setTextColor(getResources().getColor(android.R.color.white)); 
      } 
      else 
      { 
       btns[i].setBackgroundColor(getResources().getColor(android.R.color.transparent)); 
       btns[i].setTextColor(getResources().getColor(android.R.color.black)); 
      } 
     } 

    } 

    /** 
    * Method for loading data in listview 
    * @param number 
    */ 
    private void loadList(int number) 
    { 
     ArrayList<String> sort = new ArrayList<String>(); 

     int start = number * NUM_ITEMS_PAGE; 
     for(int i=start;i<(start)+NUM_ITEMS_PAGE;i++) 
     { 
      if(i<data.size()) 
      { 
       sort.add(data.get(i)); 
      } 
      else 
      { 
       break; 
      } 
     } 
     sd = new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, 
       sort); 
     listview.setAdapter(sd); 
    } 
} 

Xml dosyası: daha net açıklama ve kaynak kodu ziyareti için

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 

<TextView 
    android:id="@+id/title" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textColor="@android:color/black" 
    android:gravity="center" 
    android:textSize="16sp" 
    android:background="@android:color/darker_gray" 
    android:padding="10dp"/> 

<ListView 
    android:id="@+id/list" 
    android:divider="#000" 
    android:dividerHeight="1dp" 
    android:cacheColorHint="#00000000" 
    android:layout_width="fill_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" 
    android:fadingEdge="none"/> 

<HorizontalScrollView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    <LinearLayout 
     android:id="@+id/btnLay" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" > 
    </LinearLayout> 
</HorizontalScrollView> 
</LinearLayout> 

bu

ListView Pagination Ex-1

ListView Pagination Ex-2 bağlantılar

2

Bu özel liste görünümünü oluşturdum.

package com.pixecon.custom.views; 

import android.content.Context; 
import android.util.AttributeSet; 
import android.util.Log; 
import android.view.MotionEvent; 
import android.widget.FrameLayout; 
import android.widget.ListView; 

public class PagingListView extends ListView { 
    boolean needScroll = true; 
    private String TAG = "CustomListView"; 

    public PagingListView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public void setNeedScroll(boolean needScroll) { 
     this.needScroll = needScroll; 
    } 

    @Override 
    public boolean onInterceptTouchEvent(MotionEvent event) { 
     if (!needScroll) { 
      return false; 
     } 
     else { 
      return super.onInterceptTouchEvent(event); 
     } 
    } 

    @Override 
    public void setOnScrollListener(OnScrollListener l) { 
     super.setOnScrollListener(l); 
    } 

    public void onScrollStarted() { 
     //Scroll Started. 
    } 

    public void onScrollStopped() { 
     centralizeTheView(); 
    } 

    private void centralizeTheView() { 
     int height = getResources().getDisplayMetrics().heightPixels; 
     int centerY = height/2; 

     int visibleFirstItemPosition = getFirstVisiblePosition(); 
     int visibleLastItemPosition = getLastVisiblePosition(); 

     Log.d(TAG, "visibleFirstVisible = " + visibleFirstItemPosition); 
     Log.d(TAG, "visibleLastVisible = " + visibleLastItemPosition); 

     //TODO: Check the calcualted value and reconfirm. 
     int firstPositionInGroup = visibleFirstItemPosition % 2 - 1; 
     if (firstPositionInGroup < 0) { 
      firstPositionInGroup = 0; 
     } 

     FrameLayout layout = (FrameLayout) getChildAt(firstPositionInGroup); 
     int bottom = layout.getBottom(); 

     //Calculate the exact bottom of the view by subtracting 
     if (bottom > centerY) { 
      Log.d(TAG, "First Item - " + visibleFirstItemPosition); 
      /*listView.smoothScrollBy(3, 1);*/ 
      //listView.smoothScrollToPosition(visibleFirstItemPosition); 
      setSelection(visibleFirstItemPosition); 
     } 
     else { 
      Log.d(TAG, "Last Item - " + visibleLastItemPosition); 
      /*listView.smoothScrollBy(-3, 1);*/ 
      //listView.smoothScrollToPosition(visibleLastItemPosition); 
      setSelection(visibleLastItemPosition); 
     } 
    } 

} 
+1

Kaydırma değişim durumlarını işlemek ve onScrollStoped çağrısı yapmak için ScrollListener uygulamasının uygulanması gerektiği mantığını unutmuşsunuzdur. –

İlgili konular