我的仪表板活动中有textview txtQuantity。我为自定义适配器编写了单独的类,该类将包含已售出的产品。

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_dashboard);

    list = (ListView) findViewById(R.id.listSoldItems);

    txtAmount = (TextView) findViewById(R.id.txtAmount);
    txtItems = (TextView) findViewById(R.id.txtItems);

    // init listview
    adapter = new Sold_item_adaptor(Dashboard.this, soldItemsList);
    list.setAdapter(adapter);

我可以使用适配器从列表中删除项。用于删除项的代码是在适配器类中编写的。
public View getView(final int position, View convertView, ViewGroup parent) {
    View vi = convertView;
    if (convertView == null)
        vi = inflater.inflate(R.layout.list_row_sold_item, null);

    TextView txtListItem = (TextView) vi.findViewById(R.id.txtListItem);
    final TextView txtQuantity = (TextView) vi.findViewById(R.id.txtQuantity);
    ImageView imgCancel = (ImageView) vi.findViewById(R.id.imgCancel);

    HashMap<String, String> mapData = new HashMap<String, String>();
    mapData = data.get(position);

    txtListItem.setText(mapData.get("product"));
    txtQuantity.setText(mapData.get("qty"));

    imgCancel.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            doButtonOneClickActions(txtQuantity, position);
        }
    });

    return vi;
}

private void doButtonOneClickActions(TextView txtQuantity, int rowNumber) {
    // Do the actions for Button one in row rowNumber (starts at zero)
    data.remove(rowNumber);
    notifyDataSetChanged();

}

在我的仪表板活动中,我正在维护所选项目的数量,总金额。现在,如果我从ListView中删除了项,那么来自自定义适配器的代码将删除该项,但是如何在仪表板活动上获取通知/信号以更新数量。

最佳答案

通过提供一个简单的回调。
为此,在适配器中编写一个简单的接口

public interface OnDataChangeListener{
    public void onDataChanged(int size);
}

并为侦听器添加setter(也在适配器中)
OnDataChangeListener mOnDataChangeListener;
public void setOnDataChangeListener(OnDataChangeListener onDataChangeListener){
    mOnDataChangeListener = onDataChangeListener;
}

现在向适配器中的以下块添加附加代码
private void doButtonOneClickActions(TextView txtQuantity, int rowNumber) {
    ...
    if(mOnDataChangeListener != null){
        mOnDataChangeListener.onDataChanged(data.size());
    }
}

在仪表板活动中,然后需要注册侦听器
protected void onCreate(Bundle savedInstanceState) {
    ...
    adapter.setOnDataChangeListener(new Sold_item_adaptor.OnDataChangeListener(){
        public void onDataChanged(int size){
            //do whatever here
        }
    });
}

就这样;)。

07-28 02:14
查看更多