Android: настройка просмотра списка - PullRequest
2 голосов
/ 08 апреля 2010

Возможно ли иметь один просмотр списка с 2 или более столбцами, работающий со свойством подкачки страниц (т.е. при просмотре списка за раз в одном столбце будет отображаться только 4 элемента, а при нажатии стрелки вправо будут отображаться следующие 4 элемента).
Подскажите, пожалуйста, процедуру для ее реализации или любую идею?
Спасибо
Puneet

1 Ответ

2 голосов
/ 15 апреля 2010

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

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, имея класс базы данных, который возвращает список объектов в качестве подмножества для просмотра списка.

Вы можете скачать исходный код здесь: Скачать исходный код

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...