- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试在基本适配器上实现 getFilter() 以过滤掉列表中的搜索结果。有没有关于如何实现 getFilter() 的示例?
主 Activity .java
final AppInfoAdapter adapter = new AppInfoAdapter(this, Utilities.getSystemFilteredApplication(this), getPackageManager());
public void onTextChanged(CharSequence s, int start, int before,
int count) {
adapter.getFilter().filter(s); //Filter from my adapter
adapter.notifyDataSetChanged(); //Update my view
}
AppInfoAdapter.java
package com.example.permission;
import java.util.List;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.ImageView;
import android.widget.TextView;
public class AppInfoAdapter extends BaseAdapter implements Filterable{
private Context mContext;
private List mListAppInfo;
PackageManager mPackManager;
public AppInfoAdapter(Context c, List list, PackageManager pm) {
mContext = c;
mListAppInfo = list;
mPackManager = pm;
}
public int getCount() {
return mListAppInfo.size();
}
public Object getItem(int position) {
return mListAppInfo.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
// get the selected entry
ApplicationInfo entry = (ApplicationInfo) mListAppInfo.get(position);
// reference to convertView
View v = convertView;
// inflate new layout if null
if(v == null) {
LayoutInflater inflater = LayoutInflater.from(mContext);
v = inflater.inflate(R.layout.layout_appinfo, null);
}
// load controls from layout resources
ImageView ivAppIcon = (ImageView)v.findViewById(R.id.ivIcon);
TextView tvAppName = (TextView)v.findViewById(R.id.tvName);
TextView tvPkgName = (TextView)v.findViewById(R.id.tvPack);
// set data to display
ivAppIcon.setImageDrawable(entry.loadIcon(mPackManager));
tvAppName.setText(entry.loadLabel(mPackManager));
tvPkgName.setText(entry.packageName);
// return view
return v;
}
public Filter getFilter() {
// TODO Auto-generated method stub
return null;
}
}
编辑:编辑代码并添加完整的 AppInfoAdapter.java
最佳答案
在您的适配器中放入此类以在 getfilter 方法中使用它
//this is a simple class that filtering the ArrayList of strings used in adapter
public class filter_here extends Filter{
@Override
protected FilterResults performFiltering(CharSequence constraint) {
// TODO Auto-generated method stub
FilterResults Result = new FilterResults();
// if constraint is empty return the original names
if(constraint.length() == 0 ){
Result.values = Original_Names;
Result.count = Original_Names.size();
return Result;
}
ArrayList<String> Filtered_Names = new ArrayList<String>();
String filterString = constraint.toString().toLowerCase();
String filterableString;
for(int i = 0; i<Original_Names.size(); i++){
filterableString = Original_Names.get(i);
if(filterableString.toLowerCase().contains(filterString)){
Filtered_Names.add(filterableString);
}
}
Result.values = Filtered_Names;
Result.count = Filtered_Names.size();
return Result;
}
@Override
protected void publishResults(CharSequence constraint,FilterResults results) {
// TODO Auto-generated method stub
Names = (ArrayList<String>) results.values;
notifyDataSetChanged();
}
}
在 getfilter 中从它返回实例
@Override
public Filter getFilter() {
// TODO Auto-generated method stub
return filter;
}
关于android - 如何在 BaseAdapter 上实现 getFilter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11619874/
它显示相同的错误,但我尝试实现此功能。我不明白是什么造成了问题,因为它只是类中的另一个函数。我正在实现此功能,以将 SearchView 与 RecyclerAdapter 结合使用。我见过其他代码,
在过去使用 ArrayList 和 ArrayAdapter 填充 AutoCompleteTextView 的简单 Android 应用程序中,我现在用自定义适配器替换了 ArrayAdapter。
我对这个感到茫然,读了几篇文章后我仍然不知道如何处理我目前的情况。但是,当我过滤游标适配器时,列表不会更新或过滤任何内容,就像什么都没有发生一样。 这是我查看客户列表的 Activity public
我目前有一个带有 SearchView 的 RecyclerView,但不同之处在于,当我过滤主列表 (ArrayList) 时,我还需要更改其他两个单独的列表 (ArrayList>)。其他两个字符
在我的应用程序中,我从数据库中获取数据并在 ListView 中显示项目。我想为 listView 项目执行搜索选项。我正在从 BaseAdapter 获取项目。如何在自定义 BaseAdapter
截至目前,我有三个选项卡(可滚动),它们是带有 ActionBarActivity 实现 ActionBar.TabListener 的 fragment 我试图在按下搜索图标时添加搜索 View 功
我有一个如下所示的适配器,我使用 getFilter 方法来过滤 ListView 中的数据。它有效,但过滤后,只有过滤后的数据。我的意思是,例如,当我使用“test1”关键字过滤时,有 test1、
我正在尝试在基本适配器上实现 getFilter() 以过滤掉列表中的搜索结果。有没有关于如何实现 getFilter() 的示例? 主 Activity .java final AppInfo
这是我的主要 Activity package com.javacodegeeks.android.lbs; import android.os.Bundle; import android.app.
我试图在我的 ListView 中实现 getFilter() 函数,但每次我在 EditText 中输入一些内容时,我的 ListView 消失。 我的SetHelpRows 文件: public
我正在使用Custom ArrayAdapter 来存储用户信息,例如sammy、robert、lizie 都是用户对象,我正在使用用户类型ArrayList 来存储所有User 反对 ArrayLi
我一直在尝试实现对 listView 的简单搜索,我已经能够使用 Volley 填充它,但直到现在都无济于事。它一直标记这个 Cannot resolve method 'getFilter() 我也
我已经为自定义适配器实现了搜索功能,但仍然无法正常工作,如果有任何错误请纠正我,我已经发布了我的代码。 java代码 @Override public Filter getFilter() {
除了reportFilter之外,是否有任何过滤器可以应用于数据透视表。 pivotTable.getCTPivotTableDefinition().setFilters(
前提:我是 Java 和 Android 的新手,我对此进行了很多搜索,但我不明白如何在我的代码中实现 getFilter。 这是MainActivity(相关代码): public void loa
在我的应用程序中,我创建了一个自定义 ListView ,我想实现一个过滤器,以便可以根据在 EditText 中输入的文本来过滤列表。我将 BaseAdapter 用作单独的类。 这是我的适配器:
在此 Stackoverflow 中 answer , 这表明过滤可以在 ListView 中完成,而无需覆盖 ArrayAdapter 的 getFilter 方法,而是实现 toStringPOJ
在我的应用程序中,我创建了一个自定义 ListView ,我想实现一个过滤器,以便可以根据在 EditText 中输入的文本来过滤列表。我将 BaseAdapter 用作单独的类,并在我的主 Acti
我已经在 android 中创建了一个 ListView ,并且我已经通过使用 searchview 和 charsequence 作为参数来实现搜索过滤器 searchView.setOnQuery
本文整理了Java中org.eclipse.jst.j2ee.webapplication.WebApp.getFilters()方法的一些代码示例,展示了WebApp.getFilters()的具体
我是一名优秀的程序员,十分优秀!