リストにデータを入力するために LazyAdapter(android) を使用していますが、検索機能を追加しようとしています。部分的にしか機能しない次の getFilter 関数を作成しました...
public View getFilter(CharSequence seq, View convertView) {
String locationName;
View vi = convertView;
convertView = null;
if (convertView == null)
vi = inflater.inflate(R.layout.list_row, null);
TextView name = (TextView)vi.findViewById(R.id.name); // title
TextView smallDesc = (TextView)vi.findViewById(R.id.smallDesc);
TextView address = (TextView)vi.findViewById(R.id.address);
TextView phone = (TextView)vi.findViewById(R.id.phone);// artist name
TextView latitude = (TextView)vi.findViewById(R.id.latitude);
TextView longitude = (TextView)vi.findViewById(R.id.longitude);
TextView thumb_url = (TextView)vi.findViewById(R.id.thumb_url);
ImageView thumb_image=(ImageView)vi.findViewById(R.id.list_image); // thumb image
for (int i = 0; i < data.size(); i++) {
HashMap<String, String> locationList = new HashMap<String, String>();
locationList = data.get(i);
locationName = locationList.get(CustomizedListView.KEY_NAME);
if (locationName != null && seq != null) {
if (locationName.contains(seq)) {
name.setText(locationList.get(CustomizedListView.KEY_NAME));
address.setText(locationList.get(CustomizedListView.KEY_ADDRESS));
phone.setText(locationList.get(CustomizedListView.KEY_PHONE));
smallDesc.setText(locationList.get(CustomizedListView.KEY_SMALLDESC));
latitude.setText(locationList.get(CustomizedListView.KEY_LATITUDE));
longitude.setText(locationList.get(CustomizedListView.KEY_LONGITUDE));
thumb_url.setText(locationList.get(CustomizedListView.KEY_THUMB_URL));
String picture_name = (String) thumb_url.getText();
String _path = Environment.getExternalStorageDirectory().getAbsolutePath();
String location = _path+picture_name;
Bitmap bMap = BitmapFactory.decodeFile(location);
thumb_image.setImageBitmap(bMap);
notifyDataSetChanged();
} else {
locationList.remove(CustomizedListView.KEY_NAME);
locationList.remove(CustomizedListView.KEY_ADDRESS);
locationList.remove(CustomizedListView.KEY_PHONE);
locationList.remove(CustomizedListView.KEY_SMALLDESC);
locationList.remove(CustomizedListView.KEY_LATITUDE);
locationList.remove(CustomizedListView.KEY_LONGITUDE);
locationList.remove(CustomizedListView.KEY_THUMB_URL);
}
}
}
return vi;
}`
フィルターは機能していますが、行全体を削除するのではなく、その行のラベルを削除するだけで、まだクリックできます。
検索している文字列がリストでない場合、行全体を削除するように設定するにはどうすればよいですか?