有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用ArrayList的java ArrayAdapter

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

我在getView中遇到问题,因为我不确定如何通过ArrayList正确显示数据

我喜欢这样:

在活动中我有:

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

在课堂上,我有:

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值,另外两条有文本视图中的字符串(未设置)。在日志中一切正常,所有3个消息值都正常

知道我做错了什么吗


共 (1) 个答案

  1. # 1 楼答案

    我不完全清楚你的问题是什么。如果您的ArrayList有三个元素,并且您试图显示一个包含三个条目的列表,那么上面的代码就不会这样做getView对于每个列表项调用一次position参数告诉方法应该填充哪个列表条目。你根本没有使用position;相反,你要循环浏览整个列表,但这行不通。相反,可以尝试删除while循环,并使用类似

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

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