2015-09-08 2 views
0

Насколько я знаю, позиция возвращает определенный выбранный элемент из всего списка. Итак, как адаптер использует позицию и передает все элементы без какого-либо цикла? Я предполагаю, что в моих глазах есть основная ошибка относительно списков и позиций. Это код:Как работает позиция getView в адаптере?

(СПАСИБО ЗАРАНЕЕ):

public View getView(int position, View convertView, ViewGroup parent) { 
     viewHolder holder; 

if (convertView==null){ 

    convertView= LayoutInflater.from(mContext).inflate(R.layout.customupdatestatus, null); 
    holder=new viewHolder(); 
    holder.statusHomePage=(TextView)convertView.findViewById(R.id.statusUploaded); 
    holder.userNameHomePage=(TextView)convertView.findViewById(R.id.userNameUpdate); 

    convertView.setTag(holder); 
}else{ 
    holder=(viewHolder) convertView.getTag(); 
} 
     ParseObject statusObject= mStatus.get(position); 

String username= statusObject.getString("userName"); 
     holder.userNameHomePage.setText(username); 

     String status=statusObject.getString("newStatus"); 
     holder.statusHomePage.setText(status); 

     return convertView; 
    } 

ответ

0

Ok, это то, что не давало мне покоя в течение некоторого времени. Итак, когда создается представление, вы можете увидеть определенное количество строк. От строки 1 до последней строки в представлении адаптер подсчитывает. Когда вы прокрутите вниз, счетчик сбрасывается, или, я бы сказал, он начинается снова. Итак, скажем, у вас есть 10 строк на экране при создании представления. Когда вы прокрутите вниз, если вы выберете для проверки номер строки 5, он выберет на первом представлении, когда вы прокрутите список, он покажет, что другой элемент также проверен. Я попытался найти решение, но не смог.

+0

Спасибо за ответ. Но какая позиция является исходной, которая отправляется в ListView? Перед запуском цикла –

0

Так как адаптер использует положение и передает все предметы без какой-либо петли?

Одним словом, это не так. Это именно то, что происходит.

Рамки для Android отделяют процесс создания списка на несколько разных частей. Те, о которых мы здесь заботимся, - ListView и Adapter.

Задание ListView «s, чтобы спросить адаптер, как отобразить положение в View, а затем использовать эту информацию для правильной компоновки, мера, и сделать эти View с.

Задача Adapter заключается в том, чтобы указать ListView, как отобразить позицию в списке до примера View. Поскольку платформа Android заботится о том, чтобы перебирать элементы для вас в ListView, вам не нужно беспокоиться об этом сами - вам просто нужно предоставить сопоставление.

Вот общая идея о том, что ListView делает:

// Figure out how many children we have 
int numChildren = adapter.getCount(); 

for (int i = 0; i < numChildren; i++) { 
    // Get the view for this position 
    View childView = adapter.getView(i, null, this); 

    // Add it to ourselves 
    addView(childView); 
} 

Это, конечно, весьма упрощенной, но это хороший высокий уровень идея о том, что происходит с вашим адаптером за кулисами.

+0

Спасибо за ответ. Но какая позиция является начальной, которая отправляется в ListView? Перед запуском цикла –

+0

Перед запуском петли нет начального положения. При первом вызове метода getView() 'на вашем адаптере позиция будет первой позицией в« ListView ». Итак, если у вас есть 20 элементов, первая 'позиция', переданная' getView() ', будет равна 0. –

Смежные вопросы