当前位置: 首页 > 知识库问答 >
问题:

我如何从json Java android中的对象中删除所有空和空字符串值?

毛越
2023-03-14

我如何从JSON Java android中的对象中删除所有空和空字符串值?

过滤掉“name”为空或空的任何项目。

这是我的主要activity

 Api api = retrofit.create(Api.class);
    Call<List<MainData>> call = api.getData();
    call.enqueue(new Callback<List<MainData>>() {
        @Override
        public void onResponse (Call<List<MainData>> call, Response<List<MainData>> response) {
            if (!response.isSuccessful()) {
                Toast.makeText(MainActivity.this, response.code(), Toast.LENGTH_SHORT).show();
                return;
            }
            List<MainData> postList = response.body();

            //sort by ListId
            Collections.sort(postList, (mainData, t1) -> mainData.getListId().compareTo(t1.getListId()));

            // Filter out any items where "name" is blank or null.

            

            RecyclerViewAdapter recyclerViewAdapter = new RecyclerViewAdapter(MainActivity.this, postList);
            recyclerView.setAdapter(recyclerViewAdapter);
        }

        @Override
        public void onFailure (Call<List<MainData>> call, Throwable t) {
            Toast.makeText(MainActivity.this, t.getMessage(), Toast.LENGTH_SHORT).show();
        }
    });

}

这是我的助手

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {
//initialize variables

List<MainData> dataArrayList;
Context context;
//create constructor

public RecyclerViewAdapter (Context context, List<MainData> dataArrayList) {
    this.dataArrayList = dataArrayList;
    this.context = context;
}
    
@NonNull
@Override
public ViewHolder onCreateViewHolder (@NonNull ViewGroup parent, int viewType) {
    //this method recycling the view holder
    View view = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.list_item, parent, false);
    return new ViewHolder(view);
}

@Override
public void onBindViewHolder (@NonNull ViewHolder holder, int position) {
    //initialize Main data
    MainData data = dataArrayList.get(position);
    //set name on text view
    holder.listId.setText(String.format("list_id : %s", data.getListId()));
    holder.name.setText(String.format("name : %s", data.getName()));
    holder.id.setText(String.format("id : %s", data.getId()));
}

@Override
public int getItemCount () {
    return dataArrayList.size();
}


public class ViewHolder extends RecyclerView.ViewHolder {
    //initialize variables


    TextView listId, name, id;

    public ViewHolder (@NonNull View itemView) {
        super(itemView);

        //assign variables


        listId = itemView.findViewById(R.id.list_id);
        name = itemView.findViewById(R.id.name);
        id = itemView.findViewById(R.id.id);

    }

}

}

这是数据

公共类MainData{

public String listId, name, id;



public String getListId () {
    return listId;
}

public  String getName () {
    return name;
}

public  String getId () {
    return id;
}

}

这是Api

public interface Api {

@GET("hiring.json")
Call<List<MainData>> getData();

}

这是我的应用程序,我想删除零和emp输入图像描述在这里

共有1个答案

越麒
2023-03-14

有两种方法

(1)当膨胀数据时,您可以过滤这些不需要的值(2)创建一个临时列表,并仅从主列表中添加所需的值。示例代码:

List<MainData> tempList = new ArrayList<>();
    for(MainData data :postList)
    {
      if(null!= data.getName() && !data.getName().isEmpty())
       {   tempList.add(data);

        }
    }

然后将此模板列表传递给适配器

最终代码如下所示。

 Api api = retrofit.create(Api.class);
Call<List<MainData>> call = api.getData();
call.enqueue(new Callback<List<MainData>>() {
    @Override
    public void onResponse (Call<List<MainData>> call, Response<List<MainData>> response) {
        if (!response.isSuccessful()) {
            Toast.makeText(MainActivity.this, response.code(), Toast.LENGTH_SHORT).show();
            return;
        }
        List<MainData> postList = response.body();

        //sort by ListId
        Collections.sort(postList, (mainData, t1) -> mainData.getListId().compareTo(t1.getListId()));

        // Filter out any items where "name" is blank or null.
      List<MainData> tempList = new ArrayList<>();
    for(MainData data :postList)
    {
      if(null!= data.getName() && !data.getName().isEmpty())
       {   tempList.add(data);

        }
    }
        

        RecyclerViewAdapter recyclerViewAdapter = new RecyclerViewAdapter(MainActivity.this, tempList );
        recyclerView.setAdapter(recyclerViewAdapter);
    }

    @Override
    public void onFailure (Call<List<MainData>> call, Throwable t) {
        Toast.makeText(MainActivity.this, t.getMessage(), Toast.LENGTH_SHORT).show();
    }
});

}

如果有什么不清楚的,尽管问。

 类似资料:
  • 问题内容: 您能告诉我如何从json对象中删除所有null和空字符串值吗?删除密钥时出现错误。 到目前为止,这是我所拥有的,但是不能正常工作: 问题答案: 您实际上是要删除。您需要使用数组访问符号: 但是,这也将删除value等于0的地方,因为您没有使用严格的比较。使用来代替: 但是,这只会使对象浅走。要深入地做,可以使用递归: 请注意,如果您愿意使用lodash / underscore.js之

  • 问题内容: 如何删除python字符串中的所有空格?例如,我希望将一个字符串转换为,但是我似乎无法通过以下方式完成此操作: 问题答案: 利用没有sep参数的str.split的行为: 如果只想删除空格而不是所有空格: 过早优化 尽管效率不是主要目标(编写清晰的代码是),但以下是一些初始时间: 请注意,正则表达式已缓存,因此它没有您想象的那么慢。编译事前帮助一些,但在实践中,如果你把这个只会重要 很

  • 问题内容: 在Go中从某个任意字符串中剥离所有空格的最快方法是什么。 我从字符串包中链接了两个函数: 有人有更好的方法吗? 问题答案: 以下是一些用于从字符串中剥离所有空格字符的不同方法的基准:(源数据): :用途; 随着遇到更多的非空白字符,逐渐增加分配的空间量 :和; 产生大量中间数据 用途; 执行一次分配,但是如果源字符串主要是空格,则可能会总体上分配。 package main_test

  • 问题内容: 我使用的框架会不时返回格式错误的字符串,其中包含“空”字符。 例如,“ foobar”表示为:[,f,o,o,b,a,r] 第一个字符不是空格(’‘),因此System.out.printlin()将返回“ foobar”而不是“ foobar”。但是,String的长度是7,而不是6。显然,这使大多数String方法(等于,拆分,子字符串等)变得无用。有没有办法从字符串中删除空字符?

  • 问题内容: 我需要从字符串中删除所有特殊字符,标点符号和空格,以便只有字母和数字。 问题答案: 这可以不用正则表达式来完成: 您可以使用: 如果您坚持使用正则表达式,则其他解决方案也可以。但是请注意,如果可以在不使用正则表达式的情况下完成此操作,那么这是最好的解决方法。

  • 本文向大家介绍如何从PowerShell中删除空字符串/行?,包括了如何从PowerShell中删除空字符串/行?的使用技巧和注意事项,需要的朋友参考一下 在许多情况下,您需要从PowerShell字符串数组或文件中删除空行或字符串。在本文中,我们将删除结果或从不为空的行中过滤输出,而不是删除空字符串。这样,我们可以获得没有空行的输出。 考虑下面的示例,我们有一个名为EmptryString.tx