得到搜索结果后打开另一个activity
Opening another activity after getting search results
我在我的应用程序中使用搜索视图。在获取不同活动的搜索结果后,我遇到了问题。这是 class 显示填充了项目的列表视图。如果用户决定不搜索项目,他们只需单击一个项目即可将他们带到另一个项目 activity。
public class ShowCourses extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_courses);
Toolbar courseToolbar = (Toolbar) findViewById(R.id.courses_toolbar);
setSupportActionBar(courseToolbar);
getSupportActionBar().setTitle(R.string.courses_toolbar);
String[] subjects = {"Art", "Math", Science"};
ListAdapter subjectsAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, subjects);
ListView DisplaySubjects = (ListView) findViewById(R.id.DisplaySubjects);
DisplaySubjects.setAdapter(subjectsAdapter);
DisplaySubjects.setOnItemClickListener(
new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
switch(position){
case 0:
Intent art = new Intent(ShowCourses.this, art.class);
startActivity(art);
break;
case 1:
Intent math = new Intent(ShowCourses.this, math.class);
startActivity(math);
break;
case 2:
Intent science = new Intent(ShowCourses.this, science.class);
startActivity(science);
break;
default:
break;
}
}
});
}
@Override
protected void onResume(){
super.onResume();
}
@Override
public boolean onCreateOptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.menu_main, menu);
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
SearchManager searchManager = (SearchManager) getSystemService(SEARCH_SERVICE);
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
return super.onCreateOptionsMenu(menu);
}
}
这是显示搜索结果的activity。如果用户决定搜索让我们说 "math" 那么它会显示一个列表视图只显示数学。
public class CoursesSearchResults extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_courses_search_results);
Toolbar courseToolbar = (Toolbar) findViewById(R.id.searchCourses_toolbar); //Creates Toolbar
setSupportActionBar(courseToolbar);
String query = new String();
final Intent searchIntent = getIntent();
if(Intent.ACTION_SEARCH.equals(searchIntent.getAction())){
query = searchIntent.getStringExtra(SearchManager.QUERY);
getSupportActionBar().setTitle(query);
Toast.makeText(CoursesSearchResults.this, query, Toast.LENGTH_SHORT).show();
}
String[] subjects = {"Art", "Math", Science"};
final ArrayList<String> searchResults = new ArrayList<String>();
for(int i = 0; i < subjects.length; i++) {
if (subjects[i].toLowerCase().contains(query.toLowerCase())) {
searchResults.add(subjects[i]);
}
}
ListView courses = (ListView) findViewById(R.id.courses_search);
ListAdapter coursesAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, searchResults);
courses.setAdapter(coursesAdapter);
courses.setOnItemClickListener(
new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
switch(position){
case 0:
Intent art = new Intent(ShowCourses.this, art.class);
startActivity(art);
break;
case 1:
Intent math = new Intent(ShowCourses.this, math.class);
startActivity(math);
break;
case 2:
Intent science = new Intent(ShowCourses.this, science.class);
startActivity(science);
break;
default:
break;
}
});
}
}
我遇到的问题是因为我在单击项目时使用 switch 语句,这取决于位置。因此,如果我搜索 "math",它将位于零位置,如果我单击它,它会将我带到艺术 activity。它需要通向数学 activity 而不是艺术 activity。如果我搜索科学,它将处于零位置。然后,如果我单击科学,它将引导我进入艺术 activity 而不是科学 activity。如何从搜索结果转到不同的活动?
每次搜索像数学这样的关键字时,它都会排在第 0 位,对吧。
你有一个开关条件,检查位置是否为零,然后将 Intent 传递给 Art.class
switch(position){
case 0:
Intent art = new Intent(ShowCourses.this,art.class);
startActivity(art);
break;
现在,不管你搜索什么,如果它在位置 0 让它成为你列表视图中的任何项目,点击将重定向到艺术 Activity。
所以,对于这个问题,我们可以做的是先检查元素的类型,然后在 that.For 示例的基础上重定向到其他页面:-
courses.setOnItemClickListener(
new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
String sub = parent.getItemAtPosition(int position).toString();
if(sub.equals(subjects[0])){
Intent art = new Intent(ShowCourses.this, art.class);
startActivity(art);
}else if(sub.equals(subjects[1])){
Intent math = new Intent(ShowCourses.this, math.class);
startActivity(math);
}else if(sub.equals(subjects[2])){
Intent science = new Intent(ShowCourses.this, science.class);
startActivity(science);
}
});
我在我的应用程序中使用搜索视图。在获取不同活动的搜索结果后,我遇到了问题。这是 class 显示填充了项目的列表视图。如果用户决定不搜索项目,他们只需单击一个项目即可将他们带到另一个项目 activity。
public class ShowCourses extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_courses);
Toolbar courseToolbar = (Toolbar) findViewById(R.id.courses_toolbar);
setSupportActionBar(courseToolbar);
getSupportActionBar().setTitle(R.string.courses_toolbar);
String[] subjects = {"Art", "Math", Science"};
ListAdapter subjectsAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, subjects);
ListView DisplaySubjects = (ListView) findViewById(R.id.DisplaySubjects);
DisplaySubjects.setAdapter(subjectsAdapter);
DisplaySubjects.setOnItemClickListener(
new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
switch(position){
case 0:
Intent art = new Intent(ShowCourses.this, art.class);
startActivity(art);
break;
case 1:
Intent math = new Intent(ShowCourses.this, math.class);
startActivity(math);
break;
case 2:
Intent science = new Intent(ShowCourses.this, science.class);
startActivity(science);
break;
default:
break;
}
}
});
}
@Override
protected void onResume(){
super.onResume();
}
@Override
public boolean onCreateOptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.menu_main, menu);
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
SearchManager searchManager = (SearchManager) getSystemService(SEARCH_SERVICE);
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
return super.onCreateOptionsMenu(menu);
}
}
这是显示搜索结果的activity。如果用户决定搜索让我们说 "math" 那么它会显示一个列表视图只显示数学。
public class CoursesSearchResults extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_courses_search_results);
Toolbar courseToolbar = (Toolbar) findViewById(R.id.searchCourses_toolbar); //Creates Toolbar
setSupportActionBar(courseToolbar);
String query = new String();
final Intent searchIntent = getIntent();
if(Intent.ACTION_SEARCH.equals(searchIntent.getAction())){
query = searchIntent.getStringExtra(SearchManager.QUERY);
getSupportActionBar().setTitle(query);
Toast.makeText(CoursesSearchResults.this, query, Toast.LENGTH_SHORT).show();
}
String[] subjects = {"Art", "Math", Science"};
final ArrayList<String> searchResults = new ArrayList<String>();
for(int i = 0; i < subjects.length; i++) {
if (subjects[i].toLowerCase().contains(query.toLowerCase())) {
searchResults.add(subjects[i]);
}
}
ListView courses = (ListView) findViewById(R.id.courses_search);
ListAdapter coursesAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, searchResults);
courses.setAdapter(coursesAdapter);
courses.setOnItemClickListener(
new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
switch(position){
case 0:
Intent art = new Intent(ShowCourses.this, art.class);
startActivity(art);
break;
case 1:
Intent math = new Intent(ShowCourses.this, math.class);
startActivity(math);
break;
case 2:
Intent science = new Intent(ShowCourses.this, science.class);
startActivity(science);
break;
default:
break;
}
});
}
}
我遇到的问题是因为我在单击项目时使用 switch 语句,这取决于位置。因此,如果我搜索 "math",它将位于零位置,如果我单击它,它会将我带到艺术 activity。它需要通向数学 activity 而不是艺术 activity。如果我搜索科学,它将处于零位置。然后,如果我单击科学,它将引导我进入艺术 activity 而不是科学 activity。如何从搜索结果转到不同的活动?
每次搜索像数学这样的关键字时,它都会排在第 0 位,对吧。 你有一个开关条件,检查位置是否为零,然后将 Intent 传递给 Art.class
switch(position){
case 0:
Intent art = new Intent(ShowCourses.this,art.class);
startActivity(art);
break;
现在,不管你搜索什么,如果它在位置 0 让它成为你列表视图中的任何项目,点击将重定向到艺术 Activity。
所以,对于这个问题,我们可以做的是先检查元素的类型,然后在 that.For 示例的基础上重定向到其他页面:-
courses.setOnItemClickListener(
new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
String sub = parent.getItemAtPosition(int position).toString();
if(sub.equals(subjects[0])){
Intent art = new Intent(ShowCourses.this, art.class);
startActivity(art);
}else if(sub.equals(subjects[1])){
Intent math = new Intent(ShowCourses.this, math.class);
startActivity(math);
}else if(sub.equals(subjects[2])){
Intent science = new Intent(ShowCourses.this, science.class);
startActivity(science);
}
});