ArrayAdapter с использованием ArrayList

У меня проблемы с ArrayAdapter, потому что я использую ArrayList сообщений и хочу отображать данные сообщений.

У меня проблема в getView, потому что я не уверен, как пройти через ArrayList и правильно отобразить данные.

Я сделал это так:

В Деятельности у меня есть это:

        ArrayAdapterItem arrayAdapter = new ArrayAdapterItem(DashboardActivity.this,
                R.layout.list_view_row_item, result);
        listViewItems.setAdapter(arrayAdapter);

и в классе ArrayAdapterItem у меня есть:

public class ArrayAdapterItem extends ArrayAdapter<Message> {

ArrayList<Message> message = new ArrayList<Message>();  
Context mcontext;
int layout;
int messageNumber;


public ArrayAdapterItem(Context mcontext, int resource, ArrayList<Message> message) {
    super(mcontext, resource);
    this.message = message;
    this.mcontext = mcontext;
    this.layout = resource;
}


@Override
public View getView(int position, View convertView, ViewGroup parent ){

    ViewHolderItem viewHolder;


    if(convertView==null){
        LayoutInflater inflater = ((Activity) mcontext).getLayoutInflater();
        convertView = inflater.inflate(layout, parent, false);

        viewHolder = new ViewHolderItem();
        viewHolder.textViewItem = (TextView) convertView.findViewById(R.id.textViewItem); //ovde ih dodajem

        convertView.setTag(viewHolder);
    }else {
        viewHolder = (ViewHolderItem) convertView.getTag();
    }

    if(message!=null){

        while(messageNumber>0){
        messageNumber--;
        viewHolder.textViewItem.setText(message.get(messageNumber).getMessageText());
        Log.d("Lista AUTORA: ", message.get(messageNumber).getMessageText() + "");
        }
    }


    return convertView;


}

@Override
public int getCount() {

    messageNumber = message.size();
    return messageNumber;
}


static class ViewHolderItem {
    TextView textViewItem;
}

}

У меня есть 3 текста сообщения для отображения, и он делает, но только первый из них имеет значение ОК, а два других имеет строку из TextView (это не установлено). В журнале все нормально, все 3 значения сообщений в порядке.

Любые иды, что я сделал не так?

1 ответ

Решение

Я не совсем понимаю, в чем ваша проблема. Если твой ArrayList имеет три элемента, и вы пытаетесь отобразить список с тремя записями, приведенный выше код этого не сделает. getView вызывается один раз для каждой записи списка. position Параметр сообщает методу, какую запись списка должен заполнить метод. Вы не используете position совсем; вместо этого вы просматриваете весь список, но это не сработает. Вместо этого попробуйте удалить while цикл и используя что-то вроде

viewHolder.textViewItem.setText(message.get(position).getMessageText());
//                                          ^^^^^^^^

Как я уже сказал, я не совсем уверен, что вы пытаетесь сделать, но я думаю, вам нужно сделать что-то похожее на это.

Другие вопросы по тегам