我已经完成了很多关于如何创建搜索过滤器的教程,但是我无法让它们工作。我认为通常会遇到一个问题,因为我发现的许多教程都使用了String但我使用的是自定义类。您将如何为自定义类和适配器创建搜索过滤器?
这是我的 MainActivity 代码
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
}
}
这是我的自定义适配器
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;
}
}
这是我的自定义类
的代码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;
}
}
答案 0 :(得分:1)