无法将java.lang.Boolean强制转换为ba.store.models.Merchants

无法将java.lang.Boolean强制转换为ba.store.models.Merchants,java,android,android-studio,android-fragments,Java,Android,Android Studio,Android Fragments,我有一个listview和adapter在片段中扩展BaseAdapter。在这个listview上,我实现了scrollview监听器,它可以检测用户何时到达listview的末尾。在这种情况下,将加载更多数据。此外,我在该片段上有一个按钮,单击该按钮将重置所有过滤器,并用起始项重新加载列表。问题是,当用户滚动底部时(在加载新元素之前),按下按钮应用程序将崩溃,并出现以下错误: java.lang.Boolean cannot be cast to ba.store.models.Mercha

我有一个
listview
adapter
在片段中扩展
BaseAdapter
。在这个
listview
上,我实现了
scrollview
监听器,它可以检测用户何时到达
listview
的末尾。在这种情况下,将加载更多数据。此外,我在该片段上有一个按钮,单击该按钮将重置所有过滤器,并用起始项重新加载列表。问题是,当用户滚动底部时(在加载新元素之前),按下按钮应用程序将崩溃,并出现以下错误:

java.lang.Boolean cannot be cast to ba.store.models.Merchants
这是它正在分解的代码:

 @Override
public View getView(int position, View convertView, ViewGroup parent) {
    View view = null;
    Integer identity;
    ViewHolder viewHolder = null;
    notifyDataSetChanged();
    if (convertView == null) {
        view = LayoutInflater.from(parent.getContext()).inflate(R.layout.sales_place_item, parent, false);
        viewHolder = new ViewHolder(view);
        view.setTag(viewHolder);

    } else {
        view = convertView;
        viewHolder = (ViewHolder) view.getTag();

    }
    Merchants merchants = (Merchants) getItem(position);
    if (merchants != null) {
        identity = merchants.getMerchantId();
        viewHolder.merchant_name.setText(merchants.getMerchantName());
        viewHolder.merchant_category.setText(merchants.getCategoryName().toUpperCase());
        viewHolder.border_limit.setText(merchants.getBorderLimitAmount().toString() + " KM");
        viewHolder.end_loyalty.setText(merchants.getEndLoyaltyPoints().toString());
        viewHolder.begin_loyalty.setText(merchants.getStartLoyaltyPoints().toString());

        if (merchants.getImagePath().equals(""))
            Picasso.with(view.getContext()).load(R.drawable.placeholder_sales).fit().into(viewHolder.merchant_image);
        else
            Picasso.with(view.getContext()).load(merchants.getImagePath()).fit().into(viewHolder.merchant_image);

    }


    return view;

}
getItem方法:

@Override
public Object getItem(int position) {
    if (merchants.size() > 0) {
        return merchants.get(position);
    } else
        return false;
}

问题在于您的
getItem()
方法

如果没有要显示的数据,该方法将返回false,即布尔值。这将中断强制转换
getview()

getItem()
方法更改为:

@Override
public Object getItem(int position) {
    if (merchants.size() > 0)
        return merchants.get(position);
    else
        return null;
}
getView()
中,替换:

 Merchants merchants = (Merchants) getItem(position);
    if (merchants != null) {
        identity = merchants.getMerchantId();
        ...
与:


这将修复崩溃,但您还必须检查为什么
merchants.getSize()
为0。

问题在于您的
getItem()
方法

如果没有要显示的数据,该方法将返回false,即布尔值。这将中断强制转换
getview()

getItem()
方法更改为:

@Override
public Object getItem(int position) {
    if (merchants.size() > 0)
        return merchants.get(position);
    else
        return null;
}
getView()
中,替换:

 Merchants merchants = (Merchants) getItem(position);
    if (merchants != null) {
        identity = merchants.getMerchantId();
        ...
与:


这将修复崩溃,但您还必须检查为什么
merchants.getSize()
为0。

尝试替换
getItem()
,如下所示

@Override
public Object getItem(int position) {
    if (merchants.size() > 0) {
        return merchants.get(position);
    } else
        return null;
}

当大小为零时,您在方法中返回
false
,这会产生强制转换错误,表示
false
无法转换为
商家

请尝试替换
getItem()
,如下所示

@Override
public Object getItem(int position) {
    if (merchants.size() > 0) {
        return merchants.get(position);
    } else
        return null;
}

当大小为零时,您在方法中返回
false
,它会创建强制转换错误,表示
false
无法转换为
商家

请粘贴getItem()的实现方法为什么不在数据加载并附加到列表之前禁用按钮?请粘贴getItem()方法的实现为什么不在数据加载并附加到列表之前禁用按钮?这将干扰逻辑。适配器应该只显示数据集内容,而不是以任何方式编辑它。这将干扰逻辑。适配器应该只显示数据集内容,而不是以任何方式对其进行编辑。