在我的屏幕启动应用程序中,我点击了一个带有默认城市数据的网络服务,它会返回响应。并使用它来响应我的应用程序中的更新列表视图。这件事情很好。现在我再次点击另一个Web服务并获取其数据。此服务中的所有内容都与前一个类似,因此我也使用相同的适配器和列表视图。但问题是listview仍然显示来自先前Web服务的数据,而不是更新的数据。在重新填充数据之前我已经清除了列表,我也通知适配器,但它仍然显示旧数据。这是代码
import {} from
和解析器代码
public class VenueAdapter extends BaseAdapter {
Context context;
LayoutInflater layoutInflater;
// List<InterestAndLanguageBean> interestAndLanguageBeans=new ArrayList<>();
List<VenueDefaultBean> venueList = new ArrayList<>();
public VenueAdapter(Context context, List<VenueDefaultBean> imagesList) {
this.context = context;
this.venueList = imagesList;
layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return venueList.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View vi = convertView;
Context c = null;
ViewHolder holder = null;
if (convertView == null) {
holder = new ViewHolder();
LayoutInflater inflater = getLayoutInflater(null);
vi = inflater.inflate(R.layout.venue_row, parent, false);
holder.tv_address = (TextView) vi.findViewById(R.id.tv_address);
holder.tv_type = (TextView) vi.findViewById(R.id.tv_type);
holder.tv_location = (TextView) vi.findViewById(R.id.tv_location);
holder.tv_fees = (TextView) vi.findViewById(R.id.tv_fees);
holder.iv_venue = (ImageView) vi.findViewById(R.id.iv_venue);
vi.setTag(holder);
} else {
holder = (ViewHolder) vi.getTag();
}
holder.tv_address.setText(venueList.get(position).getLocation_Name());
holder.tv_type.setText(venueList.get(position).getVenue_type_names());
holder.tv_location.setText(venueList.get(position).getLocation_Name());
holder.tv_fees.setText(venueList.get(position).getVenue_fees());
Glide.with(getActivity()).load(venueList.get(position).getVeneImage()).placeholder(R.drawable.venue_1).into(holder.iv_venue);
return vi;
}
}
答案 0 :(得分:0)
为什么不添加方法来设置适配器本身的文本?那么一切都将在那个实例上设置,你不会从另一个地方获得信息。
答案 1 :(得分:0)
1)确定你正在调用
VenueAdapter venueAdapter = new VenueAdapter(getActivity(), venueDefaultBeanArrayList);
venueAdapter.notifyDataSetChanged();
lv_venue.setAdapter(venueAdapter);
来自UI Thread的?
2)
您需要提供正确的getItemId(int position)
(如果您没有某种身份证明,只需返回该职位)