01/10/2018, 12:11
Android làm việc với SearchView kết hợp BaseAdapter +Filterable cần lời giải thích cho các dòng code
public class Adapter extends BaseAdapter implements Filterable{
Context c;
ArrayList<Player> players;
CustomFilter filter;
ArrayList<Player> filterList;
public Adapter(Context ctx,ArrayList<Player> players) {
// TODO Auto-generated constructor stub
this.c=ctx;
this.players=players;
this.filterList=players;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return players.size();
}
@Override
public Object getItem(int pos) {
// TODO Auto-generated method stub
return players.get(pos);
}
@Override
public long getItemId(int pos) {
// TODO Auto-generated method stub
return players.indexOf(getItem(pos));
}
private class ViewHolder{
ImageView img;
TextView tv;
}
@Override
public View getView(int pos, View convertView, ViewGroup parent) {
ViewHolder holder;
// TODO Auto-generated method stub
LayoutInflater inflater=(LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if(convertView==null)
{
holder = new ViewHolder();
convertView=inflater.inflate(R.layout.model, null);
holder.tv= (TextView) convertView.findViewById(R.id.nameTv);
holder.img=(ImageView)convertView.findViewById(R.id.imageView1);
convertView.setTag(holder);
}
else{
holder= (ViewHolder) convertView.getTag();
}
//SET DATA TO THEM
holder.tv.setText(players.get(pos).getName());
holder.img.setImageResource(players.get(pos).getImg());
return convertView;
}
//
@Override
public Filter getFilter() {
// TODO Auto-generated method stub
if(filter == null)
{
filter=new CustomFilter();
}
return filter;
}
//INNER CLASS
class CustomFilter extends Filter
{
@Override
protected FilterResults performFiltering(CharSequence constraint) {
// TODO Auto-generated method stub
//Filter Result là gì?
FilterResults results=new FilterResults();
if(constraint != null && constraint.length()>0)
{
//CONSTARINT TO UPPER
constraint=constraint.toString().toUpperCase();
ArrayList<Player> filters=new ArrayList<Player>();
//get specific items
for(int i=0;i<filterList.size();i++)
{
if(filterList.get(i).getName().toUpperCase().contains(constraint))
{
Player p=new Player(filterList.get(i).getName(), filterList.get(i).getImg());
filters.add(p);
}
}
results.count=filters.size();
results.values=filters;
}else
{
results.count=filterList.size();
results.values=filterList;
}
return results;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
// TODO Auto-generated method stub
players=(ArrayList<Player>) results.values;
notifyDataSetChanged();
}
}
Đây là đoạn sourcecode của mình làm bằng search View. Có ai giải thích hộ mình class CustomerFilter không ạ?
Bài liên quan