Android BaseAdapter的getView()中的问题Viewholder为空
convertView不为null,但viewholder为null,因为我添加了一个新的数据调用notifyDataSetChanged,下一个操作如下:Android BaseAdapter的getView()中的问题Viewholder为空,android,baseadapter,getview,Android,Baseadapter,Getview,convertView不为null,但viewholder为null,因为我添加了一个新的数据调用notifyDataSetChanged,下一个操作如下: @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if (convertView == null) { convertView = LayoutInf
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(
R.layout.vote_select_listview_item, null);
viewHolder = new ViewHolder(convertView);
convertView.setTag(R.id.AnnouncementDetailVoteListViewAdapter_view,
viewHolder);
} else {
viewHolder = (ViewHolder) convertView
.getTag(R.id.AnnouncementDetailVoteListViewAdapter_view);
}
问题是我需要动态更改ListView高度,如果注释它,那么就没有问题了,我在这里发现问题:
mVoteItems.add(response4.data);
notice_vote_adapter.notifyDataSetChanged();
viewHeightUtil.setListViewHeight(notice_vote_options_lv);
尝试发布有关getView和notifyDataSetChanged的完整逻辑。我在notifyDataSetChanged调用mVoteItems.addresponse4.data时发现问题;注意\u vote\u adapter.notifyDataSetChanged;viewHeightUtil.setListViewHeightnotice_vote_options_lv;再次出现编辑问题,tkxIt不是设置列表项高度的好方法,请在调用nofifyDataSetChanged之前尝试设置高度参数,然后让getView进行刷新。
public void setListViewHeight(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
return;
}
int totalHeight = 0;
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
if (listItem instanceof ViewGroup) {
listItem.setLayoutParams(new AbsListView.LayoutParams(
AbsListView.LayoutParams.WRAP_CONTENT,
AbsListView.LayoutParams.WRAP_CONTENT));
}
listItem.measure(0, 0);
totalHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight
+ (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
listView.requestLayout();
}
if(convertView==null){
LayoutInflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
viewholder = inflater.inflate(R.layout.row, null);
}