Как показать результаты поиска в представлении списка, используя дескриптор намерения (Google Doocumentaion)? - PullRequest
0 голосов
/ 14 октября 2018

Я только что реализовал то, что google documentmentaion учит показывать результаты поиска, я просто хотел знать, как использовать курсор для отображения результатов поиска, чтобы при нажатии на него пользователь перенаправлялся на действия, связанные с ним.

функция, в которой у меня возникла проблема:

private void handleIntent(Intent intent) {

    if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
        String query = intent.getStringExtra(SearchManager.QUERY);
        Cursor c = myDB.getWordMatches(query, null);
        //process Cursor and display results


    }
}

, а полный класс вышеупомянутой функции

public class MainActivity extends AppCompatActivity {
FloatingActionButton fab;
DatabaseHelper myDB;
String nameListItem;

ArrayList<String> theList=new ArrayList<>();


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    fab=(FloatingActionButton)findViewById(R.id.addCustomer);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent=new Intent(MainActivity.this,AddCustomer.class);
            startActivity(intent);
        }
    });

    final ListView listView=(ListView)findViewById(R.id.listView);
    myDB=new DatabaseHelper(this);

    Cursor data=myDB.getAllData();
    if(data.getCount()==0){
        Toast.makeText(this,"No Data found",Toast.LENGTH_SHORT).show();
    }
    else
        while (data.moveToNext()){
        theList.add(data.getString(1));
            ListAdapter listAdapter=new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,theList);
            listView.setAdapter(listAdapter);
        }
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapter, View view, int position, long arg) {
            Intent intent = new Intent(MainActivity.this,Itemshow.class);
            nameListItem=listView.getItemAtPosition(position).toString();
            intent.putExtra("item",nameListItem);
            startActivity(intent);

        }
    });
    Toolbar toolbar=(Toolbar)findViewById(R.id.toolbarmain);
    setSupportActionBar(toolbar);

    handleIntent(getIntent());






}




private void handleIntent(Intent intent) {

    if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
        String query = intent.getStringExtra(SearchManager.QUERY);
        Cursor c = myDB.getWordMatches(query, null);
        //process Cursor and display results


    }
}



@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater=getMenuInflater();
    inflater.inflate(R.menu.menu_main,menu);
    SearchManager searchManager =
            (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView =
            (SearchView) menu.findItem(R.id.search).getActionView();
    searchView.setSearchableInfo(
            searchManager.getSearchableInfo(getComponentName()));

    return true;    }




}

, если это невозможно, вы можете сказать мне, как я могу напрямую показать результатыв том же списке?

...