2010-04-08 37 views
2

是否有可能有一個單一的列表視圖與2個或更多的列,可與分頁屬性(即在一次列表視圖將只顯示4個項目在單個列和按右箭頭它將顯示下一個4物品)..
你能告訴我實施它或任何想法的程序?
感謝
普尼特android:listview定製

+0

你能否詳細說明您的問題或把一些屏幕截圖吧。 – Praveen 2010-04-08 10:23:54

回答

2

不知道這是你要找的是什麼,但基本上這個代碼創建一個基於你使用的填充列表中的主數據集對象的子集。它是這樣的:

import android.app.ListActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ArrayAdapter; 

public class MainActivity extends ListActivity { 

// Constant for limiting array to match desired number of values in column 
private final int NUMBER_OF_ITEMS_IN_COLUMN = 4; 

// Index for starting point of array subset 
private int mStartingIndex = 0; 

// Data set array for list 
private String[] mDataSet = new String[]{ 
    "One", "Two", "Three", "Four", "Five", 
    "Six","Seven","Eight", "Nine", "Ten", 
    "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", 
    "Sixteen", "Seventeen", "Eightteen", "Nineteen", "Twenty", 
}; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    changeListViewModel(0); 
} 

private void changeListViewModel(int startingIndex) { 

// Check staring index meets certain criteria 
if(startingIndex < 0) 
    startingIndex = 0; 
else if(startingIndex >= mDataSet.length) 
    startingIndex -= NUMBER_OF_ITEMS_IN_COLUMN; 

// Set starting and ending index 
mStartingIndex = startingIndex; 
int endingIndex = startingIndex + NUMBER_OF_ITEMS_IN_COLUMN; 

// Make sure ending index isn't outside the bounds of the data set array 
if(endingIndex > mDataSet.length) endingIndex = mDataSet.length; 

// Create subset and set listview adapter 
String[] subSet = getDataSubset(startingIndex, endingIndex); 
setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, subSet)); 
} 

private String[] getDataSubset(int startingIndex, int endingIndex){ 

String[] toRet = new String[endingIndex - startingIndex]; 

int index = -1; 
for(int x = startingIndex; x < endingIndex; x++) 
    toRet[++index] = mDataSet[x]; 

return toRet; 
} 

/* 
* Called from layout main.xml file 
*/ 
public void backButtonClicked(View v) { 
changeListViewModel(mStartingIndex - NUMBER_OF_ITEMS_IN_COLUMN); 
} 


/* 
* Called from layout main.xml file 
*/ 
public void nextButtonClicked(View v) { 
changeListViewModel(mStartingIndex + NUMBER_OF_ITEMS_IN_COLUMN); 
} 
} 

這是非常基本的,但它應該能夠讓你開始。另外,使用這樣的東西,你還可以通過讓一個數據庫類返回一個對象列表作爲listview子集的一個數據庫類,將列表視圖與SQLite數據庫綁定。

你可以在這裏下載源:Download Source

+0

非常感謝你的迴應,我已經實現了同樣的方式... 但我使用高效的適配器,並在其中傳遞兩個變量..數組的起始索引和要顯示的列表的大小.. becoz i dnt從列表中下載清單大小.. 和一些函數來製作數組的起始索引和檢查條件。 – 2010-04-16 18:51:38