Как обновить просмотр списка с помощью курсора, когда пользователь вводит текст - PullRequest
0 голосов
/ 29 июня 2011

Я полностью в тупике!Я искал целую вечность, но не могу найти решение.Я чувствую, что это будет действительно легко, хотя!

В любом случае, у меня есть просмотр списка, связанный с курсором, и каждый раз, когда пользователь вводит письмо, я хочу, чтобы просмотр списка просматривал базу данных и возвращал ее.результаты, достижения.Это звучит довольно легко, но я не могу понять это.Заранее спасибо за помощь.

Вот код, который у меня есть:

public class MyList extends ListActivity {


    public static final String KEY_ROWID = "headwords._id";
    public static final String KEY_WORDS = "headwords.words";
    private ListAdapter adapter;
    private DbManager myDb;


    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.item_list);


        myDb = new DbManager(this);
        myDb.open();
        Cursor mCursor = myDb.startsWith("a");
        startManagingCursor(mCursor);



        try {
        adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, mCursor, 
                new String[] { KEY_WORDS, KEY_ROWID },
                new int[] { android.R.id.text1, android.R.id.text2 });
                setListAdapter(adapter);

        } catch (Exception e) {
            Log.i("adapter error Here!", ">>>>>>>>>>> Error!" + e.toString());
        }








        EditText myET = (EditText) findViewById(R.id.search_text);
        myET.addTextChangedListener(new TextWatcher() {
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                //code which would change listview to only show item that match what is being typed in
            }

            @Override
            public void afterTextChanged(Editable s) {
            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {    
            }

        });

    }

1 Ответ

0 голосов
/ 29 июня 2011

сначала сделайте mCursor членом:

private Cursor mCursor;

@Override
public void onCreate(Bundle icicle) {
  mCursor = myDb.startsWith("a");
}

Затем в моем примере я беру первую букву CharSequence, но это может быть не то, что вы хотите сделать, но ключ - changeCursor ();

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
  mCursor = myDb.startsWith(s.toString.substring(0,1));
  adapter.changeCursor(mCursor);
}
...