Reputation: 33
I've been through many tutorials on how to create the search filter but I can't get any of them to work. I think usually encounter a problem because many of the tutorials I have found use a String but I use my custom class. How would you make the search filter for a custom class and adapter?
Here's my MainActivity code
package com.example.android.college3;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//College List View creator
final ArrayList<College> colleges = new ArrayList<>();
colleges.add(new College("Brown University", R.drawable.brown_logo, College_Info_Brown.class));
colleges.add(new College("Pennsylvania State University", R.drawable.penn_logo, College_Info.class));
colleges.add(new College("Cornell University", R.drawable.cornell_logo, College_Info.class));
College_Adapter collegeAdapter = new College_Adapter(this, colleges);
final ListView listView = (ListView) findViewById(R.id.college_list);
listView.setAdapter(collegeAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
College college = colleges.get(i);
Intent intent = new Intent(MainActivity.this, college.getCollegeinfo());
startActivity(intent);
}
});
//search
}
}
Here is my custom adapter
package com.example.android.college3;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
public class College_Adapter extends ArrayAdapter<College> {
public College_Adapter(Activity context, ArrayList<College> colleges){
super(context, 0 , colleges);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View listItemView = convertView;
if (listItemView == null){
listItemView = LayoutInflater.from(getContext()).inflate(R.layout.list_item, parent, false);
}
College currentCollege = getItem(position);
TextView collegeNameTextView = (TextView) listItemView.findViewById(R.id.college_name_text_view);
collegeNameTextView.setText(currentCollege.getCollegeName());
ImageView collegeImageView = (ImageView) listItemView.findViewById(R.id.college_image_image_view);
collegeImageView.setImageResource(currentCollege.getImageResourceId());
return listItemView;
}
}
This is the code for my custom class
package com.example.android.college3;
public class College {
private String mCollegeName;
private int mImageResourceId;
private Class<?> mCollegeInfo;
public College(String collegeName, int imageResourceId, Class collegeInfo){
mCollegeName = collegeName;
mImageResourceId = imageResourceId;
mCollegeInfo = collegeInfo;
}
public String getCollegeName(){
return mCollegeName;
}
public int getImageResourceId(){
return mImageResourceId;
}
public Class getCollegeinfo(){
return mCollegeInfo;
}
}
Upvotes: 1
Views: 177
Reputation: 1808
Upvotes: 1