我已经使用ListView和JSON制作了新闻应用程序。我想向我的应用添加搜索功能。因此,IhAave已经完成了在操作栏中显示我的搜索栏的操作。问题是,每当我单击“搜索”时,我的ListView结果就会消失,并且我搜索的单词不会产生任何结果。我正在发布我的片段之一的代码。 (我已经通过设置日志消息进行了检查,搜索栏在日志消息中可以看到。但是在列表视图中,它没有显示结果。也许我的适配器为空?或者我在某个地方缺少列表视图。请帮帮我。>
这里是代码。
public class Uspolitics extends Fragment implements LoaderManager.LoaderCallbacks<List<News>> { private static final String LOG_TAG = Uspolitics.class.getSimpleName(); private static final String NEWS_API = "https://newsapi.org/v2/top-headlines?country=us&apiKey=6a6f7c77766442acb20c86157a152131"; private NewsAdapter mAdapter; private static final int EARTHQUAKE_LOADER_ID = 1; private TextView mEmptyStateTextView; private ProgressBar progressSpinner; private String mUrl; public Uspolitics() { // Required empty public constructor } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View rootView = inflater.inflate(R.layout.activity_all, container, false); setHasOptionsMenu(true); mEmptyStateTextView = rootView.findViewById(R.id.empty_view); final ListView listView = (ListView) rootView.findViewById(R.id.list); listView.setEmptyView(mEmptyStateTextView); mAdapter = new NewsAdapter(getActivity(), new ArrayList<News>()); listView.setAdapter(mAdapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { News currentNews = mAdapter.getItem(position); Uri uriweb = Uri.parse(currentNews.getURL()); Intent webIntent = new Intent(Intent.ACTION_VIEW, uriweb); startActivity(webIntent); } }); progressSpinner = rootView.findViewById(R.id.loading_indicator); // Indeterminate progress bar type progressSpinner.setIndeterminate(true); ConnectivityManager connMgr = (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE); if (getActivity() != null) { if (connMgr != null) { // Get details on the currently active default data network NetworkInfo networkInfo = connMgr.getActiveNetworkInfo(); if (networkInfo != null && networkInfo.isConnected()) { LoaderManager loaderManager = getActivity().getSupportLoaderManager(); loaderManager.initLoader(EARTHQUAKE_LOADER_ID, null, this); } else { progressSpinner.setVisibility(ProgressBar.GONE); mEmptyStateTextView.setText("NO INTERNET CONNECTION"); } } } return rootView; } @Override public Loader<List<News>> onCreateLoader(int i, Bundle bundle) { return new PoliticsLoader(getContext(), NEWS_API); } @Override public void onLoadFinished(Loader<List<News>> loader, List<News> news) { progressSpinner.setVisibility(ProgressBar.GONE); mAdapter.clear(); if (news != null && !news.isEmpty()) { mAdapter.addAll(news); } } @Override public void onLoaderReset(Loader<List<News>> loader) { mAdapter.clear(); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { // Inflate the options menu from XML MenuInflater inflaters = getActivity().getMenuInflater(); inflater.inflate(R.menu.dashboard, menu); MenuItem searchItem = menu.findItem(R.id.action_search); SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem); searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String s) { mAdapter.getFilter().filter(s); // **I think this is issue** return true; } @Override public boolean onQueryTextChange(String s) { return true; } }); super.onCreateOptionsMenu(menu, inflater); }
}
我已经使用ListView和JSON制作了新闻应用程序。我想向我的应用添加搜索功能。因此,IhAave已经完成了在操作栏中显示我的搜索栏的操作。问题是每当我单击...
一旦单击提交按钮,您需要再次请求API。