1
private ArrayList <HashMap<String, Object>> availableFriends;
public ListAdapter adapter = null;
friendsearch = (EditText)findViewById(R.id.friendsearch);
        friendsearch.addTextChangedListener(new TextWatcher() {

            public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
                // When user changed the Text
                FriendsActivity.this.adapter.getFilter().filter(cs);

上記の行でエラーが発生しました。ここで私が行おうとしているのは、カスタムリストビュー(画像と名前のリストビュー)で検索することです}

        public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                int arg3) {
            // TODO Auto-generated method stub

        }

        public void afterTextChanged(Editable arg0) {
            // TODO Auto-generated method stub
        }
    });

以下のコードは、リストデータを取得する方法とリストデータを表示する方法を示しています。必要な場合は、それ以外の場合はそのままにしておいてください。

public List<Friend> getFriendsList(){
    String accessToken = null;
    DatabaseHelper helper = new DatabaseHelper(getApplicationContext());
    DatabaseUtility dao = new DatabaseUtility(helper);
    try {
        accessToken = dao.getAccessToken();
    } catch (Exception e1) {
        handler.sendEmptyMessage(1);
        return null;
    }
    if(accessToken == null || accessToken.length() == 0){
        handler.sendEmptyMessage(1);
        return null;
    }

    Map<String , String> params = new HashMap<String,String>();
    params.put(Constants.ACCESS_TOKEN_PARAM, accessToken);

    List<Friend> friendsList = null;
    try {
            friendsList = Utils.getFriendsList(params,this);
    } catch (NullPointerException e) {
        handler.sendEmptyMessage(12);
        return null;
    } catch (JSONException e) {
        //handler.sendEmptyMessage(11);
        return null;
    }
    return friendsList;
}

public void displayFriends(List<Friend> friendList){
    List<Friend> friendsList = friendList;
    availableFriends = new ArrayList<HashMap<String,Object>>();
    HashMap<String, Object> friendData = null;
    Friend friend = null;
    try{
        for(int i = 0 ; i < friendsList.size() ; i++){
            friend = friendsList.get(i);
            friendData = new HashMap<String, Object>();
            friendData.put(FRIENDS_NAME_KEY, friend.getFriendName());
            friendData.put(IS_IMAGE_KEY, friend.getIsImage());
            friendData.put(IDKEY, friend.getFriendID());
            availableFriends.add(friendData);
        }

    adapter = new ListAdapter(availableFriends,FriendsActivity.this);
    listView.setAdapter(adapter);
    listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
4

1 に答える 1

2

ListAdapterFilterableインターフェイスを実装していません。ただし、やなどの一部のアダプタはArrayAdapterそうSimpleAdapterです。つまり、アダプタをインターフェイスを実装するものに切り替える、独自のカスタムアダプタを作成してそこに実装することを検討する必要があります。

また、上記のコードに基づいて、adapternullに設定し、初期化しないでください(への呼び出しはdisplayFriends()表示されません。また、初期化が適切であることを確認するために、それを調べる必要があります(より適切なものを選択した後)もちろんアダプター)。

于 2013-01-20T04:39:44.753 に答える