Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android LazyAdapter处的NullPointerException_Android_Android Listview - Fatal编程技术网

Android LazyAdapter处的NullPointerException

Android LazyAdapter处的NullPointerException,android,android-listview,Android,Android Listview,我试图通过创建一个自定义过滤器来对LazyAdapter类执行搜索。但当我试图使用TextWatcher执行搜索时,应用程序正在强制关闭。 LazyAdapter类的代码如下所示: 包com.demo.directory; 公共类LazyAdapter扩展了BaseAdapter{ private Activity activity; private ArrayList<HashMap<String, String>> data; private static Layou

我试图通过创建一个自定义过滤器来对LazyAdapter类执行搜索。但当我试图使用TextWatcher执行搜索时,应用程序正在强制关闭。 LazyAdapter类的代码如下所示: 包com.demo.directory; 公共类LazyAdapter扩展了BaseAdapter{

private Activity activity;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater = null;
public ImageLoader imageLoader;

public LazyAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
    activity = a;
    data = d;
    inflater = (LayoutInflater) activity
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    imageLoader = new ImageLoader(activity.getApplicationContext());
}

public View getFilter(CharSequence seq, View convertView) {

    String name_org;
    View vi = convertView;
    convertView = null;
    if (convertView == null)
        vi = inflater.inflate(R.layout.list_row, null);

    TextView name = (TextView) vi.findViewById(R.id.name_org); // title
    TextView address = (TextView) vi.findViewById(R.id.address_org); // artist
                                                                        // name
    ImageView thumb_image = (ImageView) vi.findViewById(R.id.list_image); // thumb
                                                                            // image

    for (int i = 0; i < data.size(); i++) {
        HashMap<String, String> org = new HashMap<String, String>();
        org = data.get(i);
        name_org = org.get(OrganizationActivity.KEY_NAME);

        if (name_org != null && seq != null) {
            if (name_org.contains(seq)) {
                name.setText(org.get(OrganizationActivity.KEY_NAME));
                address.setText(org.get(OrganizationActivity.KEY_CITY)
                        + ", " + org.get(OrganizationActivity.KEY_STATE));
                imageLoader.DisplayImage(
                        org.get(OrganizationActivity.KEY_IMAGE_URL),
                        thumb_image);
                notifyDataSetChanged();
            } else {
                org.remove(OrganizationActivity.KEY_NAME);
            }
        }
    }
    return vi;
}

public int getCount() {
    return data.size();
}

public Object getItem(int position) {
    return position;
}

public long getItemId(int position) {
    return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
    View vi = convertView;
    if (convertView == null)
        vi = inflater.inflate(R.layout.list_row, null);

    TextView name = (TextView) vi.findViewById(R.id.name_org); // title
    TextView address = (TextView) vi.findViewById(R.id.address_org); // artist
                                                                        // name
    ImageView thumb_image = (ImageView) vi.findViewById(R.id.list_image); // thumb
                                                                            // image

    HashMap<String, String> org = new HashMap<String, String>();
    org = data.get(position);

    // Setting all values in listview
    name.setText(org.get(OrganizationActivity.KEY_NAME));
    address.setText(org.get(OrganizationActivity.KEY_CITY) + ", "
            + org.get(OrganizationActivity.KEY_STATE));
    imageLoader.DisplayImage(org.get(OrganizationActivity.KEY_IMAGE_URL),
            thumb_image);
    return vi;
}
}
私人活动;
私有数组列表数据;
专用静态充气机=空;
公共图像加载器;
公共LazyAdapter(活动a,ArrayList d){
活动=a;
数据=d;
充气器=(充气器)活动
.getSystemService(上下文布局\充气机\服务);
imageLoader=新的imageLoader(activity.getApplicationContext());
}
公共视图getFilter(CharSequence seq,View convertView){
字符串名称\组织;
视图vi=转换视图;
convertView=null;
if(convertView==null)
vi=充气机充气(R.layout.list_行,空);
TextView name=(TextView)vi.findviewbyd(R.id.name_org);//title
TextView地址=(TextView)vi.findViewById(R.id.address_org);//艺术家
//名字
ImageView thumb_image=(ImageView)vi.findViewById(R.id.list_image);//thumb
//形象
对于(int i=0;i

上面的代码现在正在工作,但如果我删除搜索数据,它不会显示任何内容,即,如果搜索后清除EditText数据,则不会返回ListView的原始数据。

您确定您的
名称\u org
s
变量不为null

你必须先检查一下,比如

if(name_org != null && s != null)
{
 if(name_org.contains(s))
 {
 // Your other stuff goes here...
 .
 .
 }
}

您确定您的
name\u org
s
变量不是null

你必须先检查一下,比如

if(name_org != null && s != null)
{
 if(name_org.contains(s))
 {
 // Your other stuff goes here...
 .
 .
 }
}

我想s是空的,你检查过了吗。因为contains方法会抛出NPE,即使您传递的charsequence为null,我认为s为null,您检查过了吗。因为contains方法即使您传递的charsequence为null也会抛出NPE,以便在清除search edittext后保留数据项,所以下面的代码很有用。希望这对你有帮助

public Filter getFilter() 
{
    Filter filter = new Filter() 
    {           
        @SuppressWarnings("unchecked")
        @Override
        protected void publishResults(CharSequence constraint, FilterResults results) 
        {
            System.out.println(" --- constraint in publishResults --- "+constraint+" - results - "+results);
            itemDetailList = (List<Dish>)results.values;
            notifyDataSetChanged();
        }

        @Override
        protected FilterResults performFiltering(CharSequence constraint) 
        {
            FilterResults filterResults = new FilterResults();
            List<Dish> filtered_list = new ArrayList<Dish>();
            if(originalItemsDetails == null)
            {
                System.out.println(" --- originalItemsDetails IS NULL --- ");
                originalItemsDetails = new ArrayList<Dish>(itemDetailList);
            }
            else
            {
                System.out.println(" --- originalItemsDetails NOT NULL --- ");
            }

            if(constraint == null || constraint.length() == 0) 
            {
                filterResults.count = originalItemsDetails.size();
                filterResults.values = originalItemsDetails;
            } 
            else 
            {
                constraint = constraint.toString().toLowerCase();
                for(int i=0; i<originalItemsDetails.size(); i++) 
                {
                    String dataNames = originalItemsDetails.get(i).getDishName().toLowerCase();
                    if(dataNames.startsWith(constraint.toString()))  
                    {
                        filtered_list.add(originalItemsDetails.get(i));
                    }
                }

                filterResults.count = filtered_list.size();
                System.out.println(" --- filterResults.count --- "+filterResults.count);

                filterResults.values = filtered_list;
                System.out.println(" --- filterResults.values --- "+filterResults.values);
            }

            System.out.println(" --- constraint in performFiltering --- "+constraint);

            return filterResults;
        }
    };

    return filter;
}
公共过滤器getFilter()
{
过滤器过滤器=新过滤器()
{           
@抑制警告(“未选中”)
@凌驾
受保护的void publishResults(CharSequence约束、FilterResults结果)
{
System.out.println(“--publishResults中的约束----“+constraint+”-results-“+results”);
itemDetailList=(List)results.values;
notifyDataSetChanged();
}
@凌驾
受保护的筛选器结果性能筛选(CharSequence约束)
{
FilterResults FilterResults=新的FilterResults();
List filtered_List=new ArrayList();
if(originalItemsDetails==null)
{
System.out.println(“--originalItemsDetails为空--”);
originalItemsDetails=新的ArrayList(itemDetailList);
}
其他的
{
System.out.println(“--originalItemsDetails NOT NULL--”;
}
if(constraint==null | | constraint.length()==0)
{
filterResults.count=originalItemsDetails.size();
filterResults.values=原始数据详细信息;
} 
其他的
{
constraint=constraint.toString().toLowerCase();

对于(int i=0;i在清除search edittext后保留数据项,下面的代码很有用。希望这对您有所帮助

public Filter getFilter() 
{
    Filter filter = new Filter() 
    {           
        @SuppressWarnings("unchecked")
        @Override
        protected void publishResults(CharSequence constraint, FilterResults results) 
        {
            System.out.println(" --- constraint in publishResults --- "+constraint+" - results - "+results);
            itemDetailList = (List<Dish>)results.values;
            notifyDataSetChanged();
        }

        @Override
        protected FilterResults performFiltering(CharSequence constraint) 
        {
            FilterResults filterResults = new FilterResults();
            List<Dish> filtered_list = new ArrayList<Dish>();
            if(originalItemsDetails == null)
            {
                System.out.println(" --- originalItemsDetails IS NULL --- ");
                originalItemsDetails = new ArrayList<Dish>(itemDetailList);
            }
            else
            {
                System.out.println(" --- originalItemsDetails NOT NULL --- ");
            }

            if(constraint == null || constraint.length() == 0) 
            {
                filterResults.count = originalItemsDetails.size();
                filterResults.values = originalItemsDetails;
            } 
            else 
            {
                constraint = constraint.toString().toLowerCase();
                for(int i=0; i<originalItemsDetails.size(); i++) 
                {
                    String dataNames = originalItemsDetails.get(i).getDishName().toLowerCase();
                    if(dataNames.startsWith(constraint.toString()))  
                    {
                        filtered_list.add(originalItemsDetails.get(i));
                    }
                }

                filterResults.count = filtered_list.size();
                System.out.println(" --- filterResults.count --- "+filterResults.count);

                filterResults.values = filtered_list;
                System.out.println(" --- filterResults.values --- "+filterResults.values);
            }

            System.out.println(" --- constraint in performFiltering --- "+constraint);

            return filterResults;
        }
    };

    return filter;
}
公共过滤器getFilter()
{
过滤器过滤器=新过滤器()
{           
@抑制警告(“未选中”)
@凌驾
受保护的void publishResults(CharSequence约束、FilterResults结果)
{
System.out.println(“--publishResults中的约束----“+constraint+”-results-“+results”);
我