2014-04-08 29 views
0

任何人都可以看到什麼導致logcat返回null,因爲它沒有告訴我任何有用的東西。它一直在工作,直到我試圖添加一個過濾器,現在它甚至在它顯示列表視圖上的數據之前崩潰。可過濾的listview在baseadapter上返回null

public class PostDetailsAdapter extends BaseAdapter implements Filterable { 
private static List<PostDetails> PostsArray; 
List<PostDetails> mOriginalValues; 

private LayoutInflater mInflater; 

public PostDetailsAdapter(Context context, List<PostDetails> results) { 
    PostsArray = results; 
    mInflater = LayoutInflater.from(context); 
} 

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

public Object getItem(int position) { 
    return PostsArray.get(position); 
} 

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

public View getView(int position, View convertView, ViewGroup parent) { 
    ViewHolder holder; 
    if (convertView == null) { 
     convertView = mInflater.inflate(R.layout.post_row, null); 

     holder = new ViewHolder(); 
     holder.Title = (TextView) convertView.findViewById(R.id.title); 
     holder.Date = (TextView) convertView.findViewById(R.id.date); 
     holder.Description = (TextView) convertView.findViewById(R.id.description); 
     holder.Author = (TextView) convertView.findViewById(R.id.author); 

     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    holder.Title.setText(PostsArray.get(position).getTitle()); 
    holder.Date.setText(PostsArray.get(position).getDate()); 
    holder.Description.setText(PostsArray.get(position).getDescription()); 
    holder.Author.setText(PostsArray.get(position).getAuthor()); 

    holder.Title.setTextColor(Color.BLACK); 
    holder.Date.setTextColor(Color.BLACK); 
    holder.Description.setTextColor(Color.BLACK); 
    holder.Author.setTextColor(Color.BLACK); 

    return convertView; 
} 

static class ViewHolder { 
    TextView Title; 
    TextView Date; 
    TextView Description; 
    TextView Author; 
} 

@Override 
public Filter getFilter() 
{ 
    Filter filter = new Filter() 
    { 

     @SuppressWarnings("unchecked") 
     @Override 
     protected void publishResults(CharSequence constraint,FilterResults results) 
     { 

      PostsArray = (List<PostDetails>) results.values; 
      notifyDataSetChanged(); 
     } 

     @Override 
     protected FilterResults performFiltering(CharSequence constraint) 
     { 
      FilterResults results = new FilterResults(); 
      List<PostDetails> FilteredArrList = new ArrayList<PostDetails>(); 

      if (mOriginalValues == null) 
      { 
       System.out.println(""); 
       mOriginalValues = new ArrayList<PostDetails>(PostsArray); 
      } 

      if (constraint == null || constraint.length() == 0) 
      { 

       // set the Original result to return 
       results.count = mOriginalValues.size(); 
       results.values = mOriginalValues; 
      } 
      else 
      { 
       constraint = constraint.toString().toLowerCase(); 
       for (int i = 0; i < mOriginalValues.size(); i++) 
       { 
        PostDetails data = mOriginalValues.get(i); 
        if (data.getTitle().toLowerCase().contains(constraint.toString())) 
        { 
         FilteredArrList.add(data); 
        } 
       } 
       results.count = FilteredArrList.size(); 
       results.values = FilteredArrList; 
      } 
      return results; 
     } 
    }; 
    return filter; 
} 
} 

回答

0

原來,代碼沒有錯,我試圖在完全設置列表視圖之前將過濾器應用於此列表視圖。不完全理解AsyncTask的樂趣:)