【问题标题】:How to compare JSONObject with a Query如何将 JSONObject 与查询进行比较
【发布时间】:2021-01-21 19:37:28
【问题描述】:

如何比较:

search.setName(hits.getJSONObject(i).getString("name"));

与:

text.toString()

你能帮帮我吗?

这是我的代码

final Query query = new Query(text.toString())
                    .setHitsPerPage(50); 

            index.searchAsync(query, new CompletionHandler() {
                @Override
                public void requestCompleted( @Nullable JSONObject content, @Nullable AlgoliaException error) {

                   try {

                       list.clear(); 
                        JSONArray hits = content.getJSONArray("hits");

                        for (int i =0; i < hits.length(); i++) {

                            Model search = new Model(); 

                            search.setName(hits.getJSONObject(i).getString("nome"));
                            search.setCity(hits.getJSONObject(i).getString("city"));
                            search.setcountry(hits.getJSONObject(i).getString("country"));
                           
                            list.add(search);
   

                        }
                       searchAdapter.notifyDataSetChanged(); 

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }


                }
            });

【问题讨论】:

  • 你试过什么?好像您在 android 中执行此操作,而 text.toString() 实际上是一个“TextView”对象。我说的对吗?
  • 是的,我在安卓上做。 Text.toString() 是一个“EditText”。

标签: android json android-studio


【解决方案1】:

如果我是对的并且您正在比较 android TextView 实例文本,您需要调用:

boolean match = text.getText().toString() == hits.getJSONObject(i).getString("name");

text.toString() 返回实例 hascode 而不是 TextView 中的字符串

【讨论】:

  • 它不起作用,它给出一个错误“无法解析符号“getText”。我想比较它们是否相同。“Text”是一个“EditText”
  • EditText 是TextView 的子类。您能否分享您为文本分配值以键入 EditText 的代码?我认为您将其分配给其他东西,TextView 或 View 类型的某些超类。
  • 哦,我的错,我刚刚复制了你的代码,我已经编辑了我的答案,请检查。
  • 分享你定义的代码EditText
  • 我已经做到了我想做的事。非常感谢。
【解决方案2】:

代码

public class procurar extends AppCompatActivity {

private EditText pesquisa;
private PesquisaInicialAdapter pesquisaInicialAdapter;
private RecyclerView recyclerListaPesquisa;
List<Model> listPesquisa = new ArrayList<>();


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_procurar);

    CollectionReference pais = db.collection("Locais");

    pesquisa = findViewById(R.id.idPesquisar);
    recyclerListaPesquisa = findViewById(R.id.idRecyclerViewListaPesquisa);


    Client client = new Client("user" "pass"); 
    final Index index = client.getIndex("Locais");


    recyclerListaPesquisa.setHasFixedSize(true);
    recyclerListaPesquisa.setLayoutManager(new LinearLayoutManager(getApplicationContext()));

    pesquisaInicialAdapter = new PesquisaInicialAdapter(listPesquisa, getApplicationContext());
    recyclerListaPesquisa.setAdapter(pesquisaInicialAdapter);

        pais.get()
            .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                @Override
                public void onComplete(@NonNull Task<QuerySnapshot> task) {
                    if (task.isSuccessful()) {

                        for (DocumentSnapshot document : task.getResult()) {
                            listPesquisa.add(document.toObject(Model.class));
                        }

                        pesquisaInicialAdapter.notifyDataSetChanged(); 

                    } else {
                        Log.d("", "Error getting documents: ", task.getException());
                    }
                }
            });


    pesquisa.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }

        @Override
        public void afterTextChanged(final Editable textoDigitado) {

            final Query query = new Query(textoDigitado.toString())
                    .setHitsPerPage(50); 

            index.searchAsync(query, new CompletionHandler() {
                @Override
                public void requestCompleted( @Nullable JSONObject content, @Nullable AlgoliaException error) {

                   try {

                       listPesquisa.clear();
                        JSONArray hits = content.getJSONArray("hits");

                        for (int i =0; i < hits.length(); i++) {

                            Model pesquisa = new Model();

           pesquisa.setNome(hits.getJSONObject(i).getString("nome"));
           pesquisa.setCidade(hits.getJSONObject(i).getString("cidade")); 
           pesquisa.setPais(hits.getJSONObject(i).getString("pais")); 
           pesquisa.setRegiao(hits.getJSONObject(i).getString("regiao"));                                                                           

                            listPesquisa.add(pesquisa);

                        }

                       pesquisaInicialAdapter.notifyDataSetChanged(); 

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            });

        }
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 2013-06-16
    • 1970-01-01
    相关资源
    最近更新 更多