gpt4 book ai didi

android - ListView 搜索

转载 作者:行者123 更新时间:2023-11-29 23:36:18 25 4
gpt4 key购买 nike

我正在尝试在 fragment 上实现 ListView 但在运行代码时收到错误“android.widget.Filter android.widget.ArrayAdapter.getFilter()' on a null object reference”我尝试搜索 ListView。

xml代码

    <?xml version="1.0" encoding="utf-8"?>

<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:fillViewport="true">

<LinearLayout

android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<!-- Main ListView Always give id value as list(@android:id/list) -->

<!-- Search Bar -->
<EditText
android:id="@+id/inputSearch"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:ems="10"
android:maxLines="1"
android:drawableLeft="@android:drawable/ic_menu_search"
android:hint="Search" >
<requestFocus />
</EditText>

<ListView
android:id="@+id/assembly_business_list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>

</LinearLayout>

</ScrollView>

Java代码:

public class AssemblyBusinessFragment extends Fragment {

String[] menuItems = {"Acts","Bills","Communication from Chair","Order Papers"};
private EditText inputSearch;
private ListView assembly_business_list;
private ArrayAdapter adapter;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

View view = inflater.inflate(R.layout.assembly_business, container, false);

//returning our layout file
//change R.layout.yourlayoutfilename for each of your fragments

ListView assembly_business_list = (ListView) view.findViewById(R.id.assembly_business_list);

ArrayAdapter<String> listViewAdapter = new ArrayAdapter<String>(
getActivity(),
android.R.layout.simple_expandable_list_item_1, menuItems
);

assembly_business_list.setAdapter(listViewAdapter);

inputSearch = (EditText) view.findViewById(R.id.inputSearch);

inputSearch.addTextChangedListener(new TextWatcher() {

@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
// When user changed the Text
AssemblyBusinessFragment.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 view;

}

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
//you can set the title for your toolbar here for different fragments different titles
getActivity().setTitle("Assembly Business");
}

}

我需要有人来解决这个错误。

最佳答案

您需要在“listViewAdapter”上设置过滤器。您的变量“adapter”根本没有初始化。将代码更改为:

 @Override
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
// When user changed the Text
listViewAdapter.getFilter().filter(cs);
}

关于android - ListView 搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52201180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com