更新时间:2023-10-15 08:10:40
您的适配器没有获得新数据,因为您正在使用它自己的一组数据对其进行初始化.
Your adapter does not get the new data, because you are initializing it with its own set of data.
一种可能性是实例化一个新的适配器并将其分配给 ListView.
One possibility would be to instantiate a new adapter and assign it to the ListView.
在您的活动中为您的 ListView 添加一个字段:
Add a field for your ListView in your activity:
public TextView tv;
private int variantPosition;
CustomListAdapter customListAdapter;
CurrentOrderClass currentOrder = new CurrentOrderClass();
ListView myListView; //Listview here
在 onCreate 中,将 myListView 设置为指向您的 ListView:
In onCreate, set myListView to point to your ListView:
final ListView lv1 = (ListView) findViewById(R.id.listViewProductOrder)
myListView = lv1;
最后,当你改变你的数据时,为新数据创建一个新的Adapter:
Finally, when you change your data, create a new Adapter for the new data:
myListView.setAdapter(new CustomListAdapter(this, getListData());
或者,修改您的自定义适配器以包含 setListData 方法:
Alternatively, modify your Custom adapter to contain a setListData method:
public class CustomListAdapter extends BaseAdapter {
private ArrayList<CurrentOrderClass> listData;
private LayoutInflater layoutInflater;
public CustomListAdapter(Context context, ArrayList<CurrentOrderClass> listData) {
this.listData = listData;
layoutInflater = LayoutInflater.from(context);
}
public void setListData(ArrayList<CurrentOrderClass> data){
listData = data;
}
@Override
public int getCount() {
return listData.size();
}
@Override
public Object getItem(int position) {
return listData.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.list_row_layout, null);
holder = new ViewHolder();
holder.variantView = (TextView) convertView.findViewById(R.id.variant);
holder.unitView = (TextView) convertView.findViewById(R.id.unit);
holder.quantityView = (TextView) convertView.findViewById(R.id.quantity);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.variantView.setText(listData.get(position).getVariantArray().get(position).toString());
holder.unitView.setText(listData.get(position).getUnitArray().get(position).toString());
holder.quantityView.setText(String.valueOf(listData.get(position).getQuantityRow()));
return convertView;
}
static class ViewHolder {
TextView variantView;
TextView unitView;
TextView quantityView;
}
}
然后,修改数据后,只需调用:
Then, after modifying your data, just call:
customListAdapter.setListData(getListData());
customListAdapter.notifyDataSetChanged();