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