java - 从服务器搜索 json 数组的搜索栏

标签 java android arrays json android-studio

我正在尝试创建搜索栏,用于搜索服务器中的 json 数据并将结果显示在 ListView 中。数据是数组的形式。例如

ProductList: [

{ ProductCode: "10012010",
  ProductName: "Kell", 
  ProductGrammage: "120 gm", 
  ProductBarcode: "890123456789", 
  ProductCatCode: "40", 
  ProductCatName: "Packed Food and Condiments",
  ProductSubCode: "4001", 
  ProductSubCodeName: "Breakfast & Cereals",
  ProductMRP: "120", 
  ProductBBPrice: "115" },

ect...

]

假设我在搜索栏中输入 Kell。我希望这个 Kell 对象在我的 ListView 中弹出。

最佳答案

解析 JSON 并将结果放入 ArrayList 中。 您需要一个实现 Filterable 接口(interface)并将其设置为 ListViewArrayAdapter

您的ArrayAdapter应类似于:

private class PlacesAutoCompleteAdapter extends ArrayAdapter<String> implements Filterable {
    private ArrayList<String> resultList;

    public PlacesAutoCompleteAdapter(Context context, int textViewResourceId) {
        super(context, textViewResourceId);
    }

    @Override
    public int getCount() {
        return resultList.size();
    }

    @Override
    public String getItem(int index) {
        return resultList.get(index);
    }

    @Override
    public Filter getFilter() {
        Filter filter = new Filter() {
            @Override
            protected FilterResults performFiltering(CharSequence constraint) {
                FilterResults filterResults = new FilterResults();
                if (constraint != null) {
                    // Retrieve the autocomplete results.
                    resultList = autocomplete(constraint.toString());

                    // Assign the data to the FilterResults
                    filterResults.values = resultList;
                    filterResults.count = resultList.size();
                }
                return filterResults;
            }

            @Override
            protected void publishResults(CharSequence constraint, FilterResults results) {
                if (results != null && results.count > 0) {
                    notifyDataSetChanged();
                }
                else {
                    notifyDataSetInvalidated();
                }
            }};
        return filter;
    }
}

代码来自 here.

关于java - 从服务器搜索 json 数组的搜索栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28255181/

相关文章:

java.net.ConnectException : Connection refused

c# - 如何为 `ItemClick` 绑定(bind)到 `MvxLinearLayout`?

.net - 将 HashSet<T> 转换为 .NET 中的数组

ruby - ruby 的多维数组越界行为是否一致?

java - 如何使用嵌入式 EJB 容器制作 fat-jar

java 从点数组列表中绘制折线

java - 网站菜单栏在移动浏览器中正常工作时无法与 WebView android 一起使用

java - 从 JTable 获取值到数组

java - 如何使用 JMSTemplate 和选择器从 ActiveMQ 接收消息?

java - 单击 : Method can not be found