0

ParseObjects を Android の検索候補ボックスに表示する方法があるかどうかを尋ねたいと思います。私は最近のクエリの提案をうまく作成しましたが、うまくいきました。しかし今、ユーザーが -show results を入力している間に、Parse.com から 1 つの文字列コレクションを配置する必要があります。これには、入力中のクエリが含まれています。1週間探しても結果が出ないので、ちょっと必死です。

それを達成する方法はありますか?

SearchActivity の通常の ParseQuery では、次のようになります。

ParseQuery<Animal> squery = ParseQuery.getQuery(Animal.class);

        squery.whereMatches("animal", query, "i");
        squery.findInBackground(new FindCallback<Animal>() {

    @Override
     public void done(List<Animal> animals, ParseException error) {


      if(animals != null){
        nAdapter.clear();

        for (int i = 0; i < animals.size(); i++) {
            mProgressBar = (ProgressBar) findViewById(R.id.search_loading_animals);
            mProgressBar.setVisibility(View.INVISIBLE);

            nAdapter.add(animals.get(i));

              }  
         }
    }
 });

ParseQuery を実装する必要がある SuggestionAdapter:

public class SuggestionProvider extends ContentProvider {
    private static final String TAG = "SuggestionProvider";

    private static final int SEARCH_SUGGESTIONS = 1;

    private static final UriMatcher sURLMatcher = new UriMatcher(
            UriMatcher.NO_MATCH);

    static {
        sURLMatcher.addURI("*", SearchManager.SUGGEST_URI_PATH_QUERY,
                SEARCH_SUGGESTIONS);
        sURLMatcher.addURI("*", SearchManager.SUGGEST_URI_PATH_QUERY + "/*",
                SEARCH_SUGGESTIONS);
    }

    private static final String[] COLUMNS = new String[] {
            "_id",
            SearchManager.SUGGEST_COLUMN_TEXT_1,
            SearchManager.SUGGEST_COLUMN_INTENT_ACTION,
            SearchManager.SUGGEST_COLUMN_QUERY
    };

    public SuggestionProvider() {
    }

    @Override
    public boolean onCreate() {
        return true;
    }

    @Override
    public Cursor query(Uri url, String[] projectionIn, String selection,
            String[] selectionArgs, String sort) {
        int match = sURLMatcher.match(url);
        switch (match) {
            case SEARCH_SUGGESTIONS:
                String query = url.getLastPathSegment();
                MatrixCursor cursor = new MatrixCursor(COLUMNS);
                String[] suffixes = { "", "a", " foo", "XXXXXXXXXXXXXXXXX" };


                for (String suffix : suffixes) {
                   Toast.makeText(getContext(), "", Toast.LENGTH_SHORT).show();
                    addRow(cursor, query + suffix);
                }
                return cursor;
            default:
                throw new IllegalArgumentException("Unknown URL: " + url);
        }
    }

    private void addRow(MatrixCursor cursor, String string) {
        long id = cursor.getCount();
        cursor.newRow().add(id).add(string).add(Intent.ACTION_SEARCH).add(string);
    }

    @Override
    public String getType(Uri url) {
        int match = sURLMatcher.match(url);
        switch (match) {
            case SEARCH_SUGGESTIONS:
                return SearchManager.SUGGEST_MIME_TYPE;
            default:
                throw new IllegalArgumentException("Unknown URL: " + url);
        }
    }

    @Override
    public int update(Uri url, ContentValues values, String where, String[] whereArgs) {
        throw new UnsupportedOperationException("update not supported");
    }

    @Override
    public Uri insert(Uri url, ContentValues initialValues) {
        throw new UnsupportedOperationException("insert not supported");
    }

    @Override
    public int delete(Uri url, String where, String[] whereArgs) {
        throw new UnsupportedOperationException("delete not supported");
    }
}
4

0 に答える 0