2016-08-14 110 views
1

我已经通过了许多关于如何创建搜索筛选器的教程,但是我无法获得其中的任何一个工作。我认为通常遇到一个问题,因为我发现许多教程使用String,但我使用自定义类。您将如何为自定义类和适配器创建搜索过滤器?Android搜索筛选自定义列表

这里是我的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

那么你的问题是什么? – Amir

+0

我试图做一个搜索过滤器,我想知道如何做到这一点与我的自定义适配器和类 –

回答

1
  1. 首先,覆盖你的大学课程的平等方法只有学院名称平等。
  2. 然后,使用包含或可能的平等方法将其搜索到列表中。将结果保存到临时列表中。
  3. 将您的临时列表设置为源列表到列表视图。
  4. 为每个搜索触发器执行此操作。