- ImageListFilter.zip
- ImageListFilter
- .classpath
- .project
- AndroidManifest.xml
- assets
- bin
- gen
- com
- example
- imagelistfilter
- ic_launcher-web.png
- libs
- android-support-v4.jar
- proguard-project.txt
- project.properties
- res
- drawable-hdpi
- congvinh.jpg
- gerrard.jpg
- huynhduc.jpg
- ic_launcher.png
- messi.jpg
- minhphuong.jpg
- nagatomo.jpg
- neymar.jpg
- ronaldo.jpg
- zindance.jpg
- drawable-ldpi
- ic_launcher.png
- drawable-mdpi
- ic_launcher.png
- drawable-xhdpi
- ic_launcher.png
- layout
- menu
- values
- values-v11
- values-v14
- src
- com
- example
- imagelistfilter
|
package com.example.imagelistfilter;
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
/**
*
* @author huyletran84@gmail.com
*
*/
public class MainActivity extends Activity {
public ArrayList<FootballPlayer> listDatas = new ArrayList<MainActivity.FootballPlayer>();
public ArrayList<FootballPlayer> listBackupDatas = new ArrayList<MainActivity.FootballPlayer>();
public FootballPlayerAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String[] userNames = new String[] { "Ronaldo", "Zidance", "Cong Vinh",
"Huynh Duc", "Gerrard", "Nagatomo", "Messi", "Minh Phuong",
"neymar" };
int[] playerDrawableResourceIds = new int[] { R.drawable.ronaldo,
R.drawable.zindance, R.drawable.congvinh, R.drawable.huynhduc,
R.drawable.gerrard, R.drawable.nagatomo, R.drawable.messi,
R.drawable.minhphuong, R.drawable.neymar };
// Prepare dummy data
for (int i = 0; i < playerDrawableResourceIds.length; i++) {
FootballPlayer footballPlayer = new FootballPlayer();
footballPlayer.name = userNames[i];
footballPlayer.imageResourceId = playerDrawableResourceIds[i];
listDatas.add(footballPlayer);
listBackupDatas.add(footballPlayer);
}
ListView lv = (ListView) findViewById(R.id.lv);
adapter = new FootballPlayerAdapter();
lv.setAdapter(adapter);
EditText filter = (EditText) findViewById(R.id.filter_text);
filter.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int arg1, int arg2,
int arg3) {
adapter.getFilter().filter(s.toString());
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1,
int arg2, int arg3) {
}
@Override
public void afterTextChanged(Editable arg0) {
}
});
}
private class FootballPlayerAdapter extends BaseAdapter implements
Filterable {
private PlayerFilter playerFilter;
@Override
public int getCount() {
return listDatas.size();
}
public Filter getFilter() {
if (playerFilter == null)
playerFilter = new PlayerFilter();
return playerFilter;
}
@Override
public FootballPlayer getItem(int position) {
return listDatas.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
PlayerViewHolder holder;
if (convertView == null) {
convertView = (ViewGroup) LayoutInflater.from(
getApplicationContext()).inflate(
R.layout.football_player_item, null);
holder = new PlayerViewHolder();
holder.name = (TextView) convertView
.findViewById(R.id.player_name);
holder.thumb = (ImageView) convertView
.findViewById(R.id.player_thumbnail);
convertView.setTag(holder);
} else {
holder = (PlayerViewHolder) convertView.getTag();
}
holder.name.setText(getItem(position).name);
holder.thumb.setImageResource(getItem(position).imageResourceId);
return convertView;
}
}
private class PlayerFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults results = new FilterResults();
// We implement here the filter logic
ArrayList<FootballPlayer> filters = new ArrayList<FootballPlayer>();
if (constraint == null || constraint.length() == 0) {
// No filter implemented we return all the list
for (FootballPlayer player : listBackupDatas) {
filters.add(player);
}
results.values = filters;
results.count = filters.size();
} else {
// We perform filtering operation
for (FootballPlayer row : listBackupDatas) {
if (((FootballPlayer) row).name.toUpperCase().startsWith(
constraint.toString().toUpperCase())) {
filters.add(row);
}
}
results.values = filters;
results.count = filters.size();
}
return results;
}
@Override
protected void publishResults(CharSequence constraint,
FilterResults results) {
if (results.count == 0) {
listDatas.clear();
adapter.notifyDataSetChanged();
} else {
listDatas.clear();
ArrayList<FootballPlayer> resultList = (ArrayList<FootballPlayer>) results.values;
for (FootballPlayer row : resultList) {
listDatas.add(row);
}
adapter.notifyDataSetChanged();
}
}
}
private static class PlayerViewHolder {
public ImageView thumb;
public TextView name;
}
public class FootballPlayer {
/** Keep the id of resource file which is player's thumbnail. */
public int imageResourceId;
/** Player name. */
public String name;
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
I'm Java developer.
I started Java web coding from 2007 to 2010. After that, I began to develop Android from 2010 to now.
In my thinking, sharing and connecting is the best way to develop.
I would like to study more via yours comments and would like to have relationship with more developers in the world.