【发布时间】:2017-09-25 08:49:07
【问题描述】:
我一直在尝试为我的自定义列表视图添加搜索功能。 即使我尝试遵循许多答案或教程,我也无法将它们反映到我的适配器类中。你能帮我有搜索功能吗? 提前致谢。
主类
public class Main_restaurant_list extends Activity {
ArrayList < Restaurants > restaurantsList;
RestaurantsAdapter adapter;
ListView listview;
EditText editsearch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_restaurant_list);
editsearch = (EditText) findViewById(R.id.search);
listview = (ListView) findViewById(R.id.list);
restaurantsList = new ArrayList < Restaurants > ();
adapter = new RestaurantsAdapter(getApplicationContext(), R.layout.row_restaurant_list, restaurantsList);
listview.setAdapter(adapter);
editsearch.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
Main_restaurant_list.this.adapter.getFilter().filter(cs);
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {}
@Override
public void afterTextChanged(Editable arg0) {}
});
适配器类
public class RestaurantsAdapter extends ArrayAdapter <Restaurants> implements Filterable {
ArrayList<Restaurants> restaurantList;
LayoutInflater vi;
int Resource;
ViewHolder holder;
public RestaurantsAdapter(Context context, int resource, ArrayList<Restaurants> objects) {
super(context, resource, objects);
vi = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
Resource = resource;
restaurantList = objects;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// convert view = design
View v = convertView;
if (v == null) {
holder = new ViewHolder();
v = vi.inflate(Resource, null);
holder.imageview = (ImageView) v.findViewById(R.id.ivImage);
holder.title = (TextView) v.findViewById(R.id.title);
holder.addr1 = (TextView) v.findViewById(R.id.addr1);
holder.addr2 = (TextView) v.findViewById(R.id.addr2);
holder.tel = (TextView) v.findViewById(R.id.tel);
/*holder.mapx = (TextView) v.findViewById(R.id.mapx);*/
/*holder.mapy = (TextView) v.findViewById(R.id.mapy);*/
/* holder.contentid = (TextView) v.findViewById(R.id.contentid);*/
v.setTag(holder);
} else {
holder = (ViewHolder) v.getTag();
}
//Restaurants listViewItem= filteredItemList.get(position);
holder.imageview.setImageResource(R.drawable.ic_launcher);
new DownloadImageTask(holder.imageview).execute(restaurantList.get(position).getImage());
holder.title.setText(restaurantList.get(position).gettitle());
holder.addr1.setText("주소: " + restaurantList.get(position).getaddr1());
holder.addr2.setText(restaurantList.get(position).getAddr2());
holder.tel.setText("전화: " + restaurantList.get(position).gettel());
/* holder.mapx.setText( actorList.get(position).getmapx());*/
/*holder.mapy.setText("mapx: " + actorList.get(position).getmapy());*/
/*holder.tvChildren.setText("mapy: " + actorList.get(position).getChildren());*/
return v;
}
static class ViewHolder {
public ImageView imageview;
public TextView title;
public TextView addr1;
public TextView addr2;
public TextView tel;
public TextView mapx;
public TextView mapy;
public TextView contentid;
}
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
ImageView bmImage;
public DownloadImageTask(ImageView bmImage) {
this.bmImage = bmImage;
}
protected Bitmap doInBackground(String...urls) {
String urldisplay = urls[0];
Bitmap mIcon11 = null;
try {
InputStream in = new java.net.URL(urldisplay).openStream();
mIcon11 = BitmapFactory.decodeStream( in );
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return mIcon11;
}
protected void onPostExecute(Bitmap result) {
bmImage.setImageBitmap(result);
}
}
}
【问题讨论】:
-
错误?问题?