在 android 中实施搜索
implement search in android
* 这是我的 Activity *
我想从我的项目列表中添加搜索,但不能这样做。查看代码,如果需要更多代码,我会添加更多代码。
public class FacultyAndStaffActivity extends AppCompatActivity {
ListView list_items;
GuestTeacherAdapter guestTeacherAdapter;
public ArrayList<HashMap<String, String>> tutorList;
CC_Application ccApplication;
LayoutInflater layoutInflater;
Intent intent;
String collegeId;
android.widget.SearchView searchView = null;
SessionManager sessionManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_faculty_and_staff);
list_items = (ListView) findViewById(R.id.list_items);
ccApplication = CC_Application.getInstance();
layoutInflater = getLayoutInflater();
intent = getIntent();
sessionManager = new SessionManager(getApplicationContext());
try {
//saving college id in session testing
if (sessionManager.isLoggedIn()){
HashMap<String, String> user = sessionManager.getUserDetails();
collegeId = user.get(SessionManager.KEY_COLLEGE_ID);
tutorList = ccApplication.getAllTutorListByCollegeName(DbFields.TABLE_COLLEGE, DbFields.TABLE_TUTOR, DbFields.COLLEGE_ID, DbFields.T_COLLEGE_ID, collegeId);
}else {
if (intent != null) {
collegeId = intent.getStringExtra("id");
tutorList = ccApplication.getAllTutorListByCollegeName(DbFields.TABLE_COLLEGE, DbFields.TABLE_TUTOR, DbFields.COLLEGE_ID, DbFields.T_COLLEGE_ID, collegeId);
}else {
Toast.makeText(FacultyAndStaffActivity.this, "No Intent received", Toast.LENGTH_SHORT).show();
}
}
}catch (Exception e){
}
android.support.v7.app.ActionBar actionBar = getSupportActionBar();
actionBar.setCustomView(R.layout.actionbar_header);
actionBar.setDisplayShowCustomEnabled(true);
ImageView college_logo = (ImageView) findViewById(R.id.college_logo);
((TextView) findViewById(R.id.action_bar_title)).setText("Faculty & Staff By Name");
college_logo.setBackgroundResource(R.drawable.faculty_staff);
int checkValue = 1;
guestTeacherAdapter = new GuestTeacherAdapter(this, layoutInflater, tutorList, checkValue);
list_items.setAdapter(guestTeacherAdapter);
list_items.setTextFilterEnabled(true);
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_faq, menu);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
searchView = (android.widget.SearchView) menu.findItem(R.id.menu_item_search).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setIconifiedByDefault(false);
} else {
onSearchRequested();
}return super.onCreateOptionsMenu(menu);
}
* 这是我的适配器 *
这是适配器
public class GuestTeacherAdapter extends BaseAdapter implements Filterable {
GuestFacultyAndStaff pContext;
LayoutInflater layoutInflater;
DbFields dbFields = new DbFields();
ArrayList<HashMap<String,String>> tutorList;
Context mContext;
int checkValue;
public GuestTeacherAdapter(GuestFacultyAndStaff guestFacultyAndStaffFragment, LayoutInflater layoutInflater,
ArrayList<HashMap<String, String>> tutorListList) {
this.pContext = guestFacultyAndStaffFragment;
this.layoutInflater = layoutInflater;
this.tutorList = tutorListList;
this.notifyDataSetChanged();
}
@Override
public int getCount() {
return tutorList.size();
}
@Override
public Object getItem(int i) {
return i;
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.item_teacher,null);
}
TextView teacherName = (TextView) convertView.findViewById(R.id.teacherName);
// TextView education = (TextView) convertView.findViewById(R.id.education);
TextView phone = (TextView) convertView.findViewById(R.id.phoneNumber);
TextView email = (TextView) convertView.findViewById(R.id.emailTeacher);
TextView shotName = (TextView) convertView.findViewById(R.id.shotName);
String teacherName1 = tutorList.get(position).get(dbFields.TUTOR_NAME);
// String education1 = tutorList.get(position).get(dbFields.TUTOR_EDUCATION);
String phone1 = tutorList.get(position).get(dbFields.TUTOR_PHONE);
String email1 = tutorList.get(position).get(dbFields.TUTOR_EMAIL);
teacherName.setText(teacherName1);
// testEducation.setText(education1);
phone.setText(phone1);
email.setText(email1);
shotName.setText(teacherName1.substring(0,1).toUpperCase());
return convertView;
}}
此适配器用于列表详细信息
在您的 activity 和
中实施 SearchView.OnQueryTextListener
将搜索视图设置为:
private void setupSearchView() {
int id = mSearchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
TextView textView = (TextView) mSearchView.findViewById(id);
textView.setTextColor(Color.WHITE);
mSearchView.setIconifiedByDefault(true);
mSearchView.setOnQueryTextListener(this);
mSearchView.setSubmitButtonEnabled(true);
mSearchView.setQueryHint("Enter search");
}
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String searchQuery) {
myAppAdapter.filter(searchQuery.toString().trim());
listView.invalidate();
return true;
}
});
* 这是我的 Activity *
我想从我的项目列表中添加搜索,但不能这样做。查看代码,如果需要更多代码,我会添加更多代码。
public class FacultyAndStaffActivity extends AppCompatActivity {
ListView list_items;
GuestTeacherAdapter guestTeacherAdapter;
public ArrayList<HashMap<String, String>> tutorList;
CC_Application ccApplication;
LayoutInflater layoutInflater;
Intent intent;
String collegeId;
android.widget.SearchView searchView = null;
SessionManager sessionManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_faculty_and_staff);
list_items = (ListView) findViewById(R.id.list_items);
ccApplication = CC_Application.getInstance();
layoutInflater = getLayoutInflater();
intent = getIntent();
sessionManager = new SessionManager(getApplicationContext());
try {
//saving college id in session testing
if (sessionManager.isLoggedIn()){
HashMap<String, String> user = sessionManager.getUserDetails();
collegeId = user.get(SessionManager.KEY_COLLEGE_ID);
tutorList = ccApplication.getAllTutorListByCollegeName(DbFields.TABLE_COLLEGE, DbFields.TABLE_TUTOR, DbFields.COLLEGE_ID, DbFields.T_COLLEGE_ID, collegeId);
}else {
if (intent != null) {
collegeId = intent.getStringExtra("id");
tutorList = ccApplication.getAllTutorListByCollegeName(DbFields.TABLE_COLLEGE, DbFields.TABLE_TUTOR, DbFields.COLLEGE_ID, DbFields.T_COLLEGE_ID, collegeId);
}else {
Toast.makeText(FacultyAndStaffActivity.this, "No Intent received", Toast.LENGTH_SHORT).show();
}
}
}catch (Exception e){
}
android.support.v7.app.ActionBar actionBar = getSupportActionBar();
actionBar.setCustomView(R.layout.actionbar_header);
actionBar.setDisplayShowCustomEnabled(true);
ImageView college_logo = (ImageView) findViewById(R.id.college_logo);
((TextView) findViewById(R.id.action_bar_title)).setText("Faculty & Staff By Name");
college_logo.setBackgroundResource(R.drawable.faculty_staff);
int checkValue = 1;
guestTeacherAdapter = new GuestTeacherAdapter(this, layoutInflater, tutorList, checkValue);
list_items.setAdapter(guestTeacherAdapter);
list_items.setTextFilterEnabled(true);
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_faq, menu);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
searchView = (android.widget.SearchView) menu.findItem(R.id.menu_item_search).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setIconifiedByDefault(false);
} else {
onSearchRequested();
}return super.onCreateOptionsMenu(menu);
}
* 这是我的适配器 * 这是适配器
public class GuestTeacherAdapter extends BaseAdapter implements Filterable {
GuestFacultyAndStaff pContext;
LayoutInflater layoutInflater;
DbFields dbFields = new DbFields();
ArrayList<HashMap<String,String>> tutorList;
Context mContext;
int checkValue;
public GuestTeacherAdapter(GuestFacultyAndStaff guestFacultyAndStaffFragment, LayoutInflater layoutInflater,
ArrayList<HashMap<String, String>> tutorListList) {
this.pContext = guestFacultyAndStaffFragment;
this.layoutInflater = layoutInflater;
this.tutorList = tutorListList;
this.notifyDataSetChanged();
}
@Override
public int getCount() {
return tutorList.size();
}
@Override
public Object getItem(int i) {
return i;
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.item_teacher,null);
}
TextView teacherName = (TextView) convertView.findViewById(R.id.teacherName);
// TextView education = (TextView) convertView.findViewById(R.id.education);
TextView phone = (TextView) convertView.findViewById(R.id.phoneNumber);
TextView email = (TextView) convertView.findViewById(R.id.emailTeacher);
TextView shotName = (TextView) convertView.findViewById(R.id.shotName);
String teacherName1 = tutorList.get(position).get(dbFields.TUTOR_NAME);
// String education1 = tutorList.get(position).get(dbFields.TUTOR_EDUCATION);
String phone1 = tutorList.get(position).get(dbFields.TUTOR_PHONE);
String email1 = tutorList.get(position).get(dbFields.TUTOR_EMAIL);
teacherName.setText(teacherName1);
// testEducation.setText(education1);
phone.setText(phone1);
email.setText(email1);
shotName.setText(teacherName1.substring(0,1).toUpperCase());
return convertView;
}}
此适配器用于列表详细信息
在您的 activity 和
中实施 SearchView.OnQueryTextListener将搜索视图设置为:
private void setupSearchView() {
int id = mSearchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
TextView textView = (TextView) mSearchView.findViewById(id);
textView.setTextColor(Color.WHITE);
mSearchView.setIconifiedByDefault(true);
mSearchView.setOnQueryTextListener(this);
mSearchView.setSubmitButtonEnabled(true);
mSearchView.setQueryHint("Enter search");
}
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String searchQuery) {
myAppAdapter.filter(searchQuery.toString().trim());
listView.invalidate();
return true;
}
});