java - 使用 ArrayList 的 ArrayAdapter

标签 java android listview arraylist android-arrayadapter

我在使用 ArrayAdapter 时遇到问题,因为我使用的是消息 ArrayList,并且想要显示消息数据。

我在 getView 中遇到问题,因为我不确定如何遍历 ArrayList 并正确显示数据。

我确实喜欢这样:

Activity 中我有这个:

        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 个消息文本要显示,它确实显示,但只有第一个具有 ok 值,其他两个具有来自 TextView 的字符串(未设置)。日志中一切正常,消息的所有 3 个值都正常。

我做错了什么吗?

最佳答案

我不太清楚你的问题是什么。如果您的 ArrayList 具有三个元素,并且您尝试显示包含三个条目的列表,则上述代码将无法执行此操作。 getView 对于每个列表条目都会调用一次。 position 参数告诉方法该方法应该填充哪个列表条目。您根本没有使用 position;相反,您将循环遍历整个列表,但这不起作用。相反,尝试删除 while 循环并使用类似

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

就像我说的,我不完全确定您要做什么,但我认为您需要做类似的事情。

关于java - 使用 ArrayList 的 ArrayAdapter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24869657/

相关文章:

Android自定义Listview在一个ListItem中使用多个Imageview时速度太慢

Android Oreo 为 EditText 禁用自动填充

c# - 如何在代码中定义 WPF GridView 列的 "Auto"宽度?

java - JButton 保持按下状态

java - ImageView MotionEvent如果有两个指针,则停止ACTION_UP

java - 是否可以在 Hudson 中禁用 "People" View ?

java - 找不到以下类: - ImageButton (Change to android. widget.ImageButton,修复构建路径,编辑XML)

android - ListView 的高度

c# - 单击按钮时如何选择 ListView 项目

c# - 从 Google 网络历史记录中检索旧搜索