0
我正在使用imageview和textview的自定義列表視圖在imageview.I已完成以下代碼進行過濾的項目。使用ImageView不自動搜索自定義ListView圖像
主要片段:
CategoriesAdapter adapter;
edt_SearchBar.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
adapter.getFilter().filter(s);
}
@Override
public void afterTextChanged(Editable s) {
}
});
的CategoriesAdapter類:
public class CategoriesAdapter extends BaseAdapter {
List<CategoryDataModel> category_list,category_filter_list;
Context context;
LayoutInflater inflater;
ImageLoader imageLoader;
ViewHolder vh;
ValueFilter filter;
int counter=0;
String[] images_array;
public CategoriesAdapter(List<CategoryDataModel> category_list, Context context) {
this.category_list=category_list;
this.category_filter_list=category_list;
this.context=context;
inflater= (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
imageLoader= AppController.getInstance().getImageLoader();
images_array=new String[]{"kochi_cinepolis.png","kochi_padma.png"};
}
@Override
public int getCount() {
return category_list.size();
}
@Override
public Object getItem(int position) {
return category_list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView==null)
{
convertView=inflater.inflate(R.layout.category_view_style, null);
vh=new ViewHolder();
if (imageLoader == null)
imageLoader = AppController.getInstance().getImageLoader();
vh.imageView = (NetworkImageView) convertView .findViewById(R.id.imageView_grid);
vh.categoryName= (TextView) convertView.findViewById(R.id.tvcategory);
convertView.setTag(vh);
}
else
{
vh=(ViewHolder) convertView.getTag();
}
vh.imageView.setImageUrl(AppConstant.IMAGE_FOLDER +images_array[position], imageLoader);
vh.imageView.setDefaultImageResId(R.drawable.default_category_loading);
vh.categoryName.setText(category_list.get(position).getCategory_name().toUpperCase());
return convertView;
}
public class ViewHolder
{
NetworkImageView imageView;
TextView categoryName;
}
public ValueFilter getFilter() {
if(filter==null) {
filter=new ValueFilter();
}
return filter;
}
public class ValueFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults results=new FilterResults();
if(constraint!=null && constraint.length()>0){
String cons_value=constraint.toString();
List<CategoryDataModel> filterList=new ArrayList<>();
for(int i=0;i<category_filter_list.size();i++){
if(category_filter_list.get(i).getCategory_name().toLowerCase().contains(cons_value.toLowerCase())) {
filterList.add(category_filter_list.get(i));
}
}
results.count=filterList.size();
results.values=filterList;
}else{
results.count=category_filter_list.size();
results.values=category_filter_list;
}
return results;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
category_list=(List<CategoryDataModel>) results.values;
notifyDataSetChanged();
}
}
}
問題是following.Now我在listview.I兩個項目正在基礎上,搜索列表視圖textview.text中的文本。但是當返回搜索結果時,錯誤地顯示了listview行的相應圖像。第一行的圖像是顯示的內容而不是正確的行。請儘早提供幫助。
我嘗試實現Filterable接口並使用overriden getFilter()方法。問題仍然存在。 – jojo
我解決了這個問題。設置文本和設置圖像的列表應該與已過濾的列表相同。我不能使用單獨的圖像列表。 – jojo