【问题标题】:SwitchCompat in ListView to make network callListView 中的 SwitchCompat 进行网络调用
【发布时间】:2018-05-06 14:16:48
【问题描述】:

我在 listView 项目中有 SwitchCompat,我希望每次我为特定项目更改它为 ON/OFF 时将此 SwitchCompat 状态发送到我的远程数据库,我尝试将此网络调用放入适配器中,但我得到了异常:NetworkOnMainThreadException

有什么帮助吗?

我正在使用 Retrofit 进行网络调用

我的适配器

Adapter.java

public View getView(int position, View convertView, ViewGroup parent) {
    View row = convertView;
    ExpensesHolder holder = null;
    if (row == null) {
        LayoutInflater inflater = ((Activity) mContext).getLayoutInflater();
        row = inflater.inflate(layoutResourceId, parent, false);
        holder = new ExpensesHolder();
        ...
        row.setTag(holder);

    } else {
        holder = (ExpensesHolder) row.getTag();
    }
    holder.switchExpenses.setTag(position);
    ...
    if (flag.equals("unselected")) {
        holder.switchExpenses.setChecked(false);

    } else {
        holder.switchExpenses.setChecked(true);

    }
    if (TextUtils.isEmpty(expName)) {
        // want to make network call here
        }




    return row;

}

【问题讨论】:

  • 您应该添加一些代码,以便可以重现您的问题..
  • 完成添加我的适配器获取视图

标签: android listview retrofit retrofit2 switchcompat


【解决方案1】:

您可能正在调用 call.execute(),以避免 NetworkOnMainThreadException 使用 call.enqueue(listener)

【讨论】:

  • 如果结果是String而不是json,如何执行call.enqueue(listener)?
  • 您可以在链接中查看答案[stackoverflow.com/a/37589828/5913289]
  • 谢谢你,像魅力一样工作(Y)
猜你喜欢
  • 2015-09-06
  • 2020-08-30
  • 1970-01-01
  • 1970-01-01
  • 2012-08-17
  • 1970-01-01
  • 1970-01-01
  • 2020-04-28
  • 2010-11-24
相关资源
最近更新 更多