繁体   English   中英

想要对不同的活动和不同的row_layouts使用同一适配器

[英]Want to use same Adapter with different Activities and different row_layouts

我希望我的适配器根据发送数据的Activity选择一个row_layout或另一个row_layout。 有两个活动正在发送数据。

目前,我只知道如何使适配器使用一个row_layout。 我无法弄清楚如何编写额外的代码以使其选择不同的row_layout,具体取决于哪个Activity发送数据。 (第二个row_layout中将没有任何复选框)。

这是我的适配器:

public class ShopItemAdapter extends ArrayAdapter<ShopItem> {

public ShopItemAdapter(Context context, ArrayList<ShopItem> shopItem){
    super(context, 0, shopItem);
}

@NonNull
@Override
public View getView(int position, View convertView, @NonNull ViewGroup parent) {

    if(convertView == null){
        convertView = LayoutInflater.from(getContext()).inflate(R.layout.row_layout, parent, false);
    }

    TextView tvItem = (TextView)convertView.findViewById(R.id.tvItemName);
    TextView tvQty = (TextView)convertView.findViewById(R.id.tvQuantity);
    CheckBox cbIsPurchased = (CheckBox)convertView.findViewById(R.id.cbIsPurchased);

    ShopItem _shopItem = getItem(position);

    tvItem.setText(_shopItem.getItemName());
    tvQty.setText(String.valueOf(_shopItem.getQuantity()));

    if(_shopItem.getIsPurchased() == 1){
        cbIsPurchased.setChecked(true);
    }
    else{
        cbIsPurchased.setChecked(false);
    }

    return convertView;
}

}

您可以向ShopItemAdapter构造函数中添加一些参数,以区别于调用哪个Activity,但是如果这意味着在getView代码中使用许多if条件,那么我认为最好编写多个适配器,您将拥有一个清晰得多的代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM