2010-04-08 1 views
2

Возможно ли иметь один список с двумя или более столбцами, действующими с использованием свойства подкачки (т. Е. В списке времени будет отображаться только 4 элемента в одном столбце, а при нажатии стрелки вправо будет показано следующее 4 пункты).
Не могли бы вы рассказать мне о процедуре реализации или какой-либо идеи?
Благодаря
Puneetandroid: listview customization

+0

вы можете разработать свой вопрос или поставить какие-то снимки экрана об этом. – Praveen

ответ

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); 
} 
} 

Это довольно простой, но он должен быть в состоянии начать работу. Кроме того, используя что-то подобное, вы также можете связать список с базой данных SQLite, имея класс базы данных, который возвращает список объектов в качестве подмножества для списка.

Вы можете загрузить исходный код здесь: Download Source

+0

Большое спасибо за ответ ура, я реализовал то же самое ... , но я использую эффективный адаптер и передаю в него две переменные .. начальный индекс массива и размер списка для отображения. becoz i dnt knw размер списка, поскольку он загружен из сети .. и некоторая функция manuplate начальный индекс массива & условия проверки. –