搜索项目列表视图适配器片段

时间:2015-02-09 15:08:43

标签: android listview search android-fragments

我有一个列表视图,其中包含一个显示标题和图像的自定义单项视图。我已经实现了一个搜索栏来按标题搜索项目,但是当我尝试搜索某些东西时,我有一个nullpointerexception。当我在适配器中只有标题时(图像在所有项目中都是相同的)它可以正常工作。但现在在新的适配器中我也改变了任何单个项目中的图像。我认为错误是因为使用 Alimentacion.this.adapter.getFilter()。filter(cs); (此行是我有nullpointer的地方)来搜索功能,我只把标题放在搜索框上..但我不知道如何只搜索标题而不是完整的适配器.. 我在片段中有列表视图。 Mi代码是:

 @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View myInflatedView = inflater.inflate(R.layout.fragment_alimentacion, container,false);

    // Set the Text to try this out
    lv = (ListView)myInflatedView.findViewById(R.id.list_view);
    inputSearch = (EditText) myInflatedView.findViewById(R.id.inputSearch);
// Listview Data
    String categorias[] = {"1. Huevos y Lacteos", "2. Carnes y Derivados", "3. Pescados y Mariscos", "4. Aceites y grasos", "5. Verduras y hortalizas",
            "6. Frutas", "7. Bebidas",
            "8. Comida Rapida", "9. Pasta y Cereales", "10. Bolleria y Snacks"};
    Integer ImgCategorias[] = {R.drawable.cat1,R.drawable.cat2,R.drawable.cat3,R.drawable.cat4,R.drawable.cat5,R.drawable.cat6
            ,R.drawable.cat7,R.drawable.cat8,R.drawable.cat9,R.drawable.cat10};
   // String Calorias[]= new String [categorias.length];

    // Pass results to ListViewAdapter Class
    CustomList adapter = new
            CustomList(this.getActivity(), categorias, ImgCategorias);


    // Binds the Adapter to the ListView
    lv.setAdapter(adapter);

    // OLD ADAPTER
 /*   adapter2 = new ArrayAdapter<String>(this.getActivity(), R.layout.adapter_categorias, R.id.TVTitulo, categorias);
    lv.setAdapter(adapter2); */

    /**
     * Enabling Search Filter
     * */
    inputSearch.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
            // When user changed the Text
            Alimentacion.this.adapter.getFilter().filter(cs);
                        }
        @Override
        public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                                      int arg3) {
            // TODO Auto-generated method stub
        }

        @Override
        public void afterTextChanged(Editable arg0) {
            // TODO Auto-generated method stub
        }
    });

    return myInflatedView;
}

// TODO: Rename method, update argument and hook method into UI event
public void onButtonPressed(Uri uri) {
    if (mListener != null) {
        mListener.onFragmentInteraction(uri);
    }
}

1 个答案:

答案 0 :(得分:0)

如果该行返回空指针异常,则适配器中的getFilter函数可能存在问题,该函数返回空指针。你可以在这里发布这个功能,这样我们就可以查看它并调试它,看看那里发生了什么。