Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
Sherstyuk_Ya_N
4 / 4 / 0
Регистрация: 22.07.2013
Сообщений: 30
#1

Не выполняется поиск в ListView - Программирование Android

28.07.2013, 23:29. Просмотров 1813. Ответов 8
Метки нет (Все метки)

Вопрос таков имею базу данных с данными вывод имён в костомный ListView но поиска не выполняется. Брал пример всё работает в моём случае нет. Подскажите пожалуйста
Вот код из примера
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package com.androidhive.androidlistviewwithsearch;
 
import java.util.ArrayList;
import java.util.HashMap;
 
import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
 
public class MainActivity extends Activity {
     
    // List view
    private ListView lv;
     
    // Listview Adapter
    ArrayAdapter<String> adapter;
     
    // Search EditText
    EditText inputSearch;
     
     
    // ArrayList for Listview
    ArrayList<HashMap<String, String>> productList;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         
        // Listview Data
        String products[] = {"Dell Inspiron", "HTC One X", "HTC Wildfire S", "HTC Sense", "HTC Sensation XE",
                                "iPhone 4S", "Samsung Galaxy Note 800",
                                "Samsung Galaxy S3", "MacBook Air", "Mac Mini", "MacBook Pro"};
         
        lv = (ListView) findViewById(R.id.list_view);
        inputSearch = (EditText) findViewById(R.id.inputSearch);
         
        // Adding items to listview
        adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.product_name, products);
        lv.setAdapter(adapter);
         
        /**
         * Enabling Search Filter
         * */
        inputSearch.addTextChangedListener(new TextWatcher() {
             
            @Override
            public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
                // When user changed the Text
                MainActivity.this.adapter.getFilter().filter(cs);   
            }
             
            @Override
            public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                    int arg3) {
                // TODO Auto-generated method stub
                 
            }
             
            @Override
            public void afterTextChanged(Editable arg0) {
                // TODO Auto-generated method stub                          
            }
        });
    }    
}
А вот мой с учётов вывода имен в базе данных и оброботчиком нажатия на ListView

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
package sherstyuk.ya.n.bd_str;
 
import database.DatabaseConnector;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.CursorAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
 
public class Vse_dannue extends Activity {
    
    public static final String ROW_ID = "row_id";
     private ListView lvMain;//===== Список с наименованиями данных
     private CursorAdapter conAdapter;
     EditText inputSearch;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.vse_dannue_form);
        
        inputSearch = (EditText) findViewById(R.id.inputSearch);
        //===== Вывод в ListView =====
        lvMain = (ListView) findViewById(R.id.lvMain);
        lvMain.setOnItemClickListener(viewConListener);
        
        String[] from = new String[] { "name"};
        int[] to = new int[] { R.id.textView_name_costom };
        
        conAdapter = new SimpleCursorAdapter(this, R.layout.list, null, from, to);
        
        lvMain.setAdapter(conAdapter);
        
        inputSearch.addTextChangedListener(new TextWatcher() {
            
            @Override
            public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
                // When user changed the Text
                Vse_dannue.this.conAdapter.getFilter().filter(cs);   
            }
             
            @Override
            public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                    int arg3) {
                // TODO Auto-generated method stub
                 
            }
             
            @Override
            public void afterTextChanged(Editable arg0) {
                // TODO Auto-generated method stub                          
            }
        });
     
    }
    
    OnItemClickListener viewConListener = new OnItemClickListener() 
    {
       public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) 
       {         
          Intent viewCon = new Intent(Vse_dannue.this, Pokaz_dan.class);
          viewCon.putExtra(ROW_ID, arg3);
          startActivity(viewCon);
       }
    };
    
    protected void onResume() 
    {
       super.onResume();  
       new GetContacts().execute((Object[]) null);
     } 
    
    protected void onStop() 
    {
       Cursor cursor = conAdapter.getCursor();
       
       if (cursor != null) 
          cursor.deactivate();
       
       conAdapter.changeCursor(null);
       super.onStop();
    }   
    
    private class GetContacts extends AsyncTask<Object, Object, Cursor> 
    {
       DatabaseConnector dbConnector = new DatabaseConnector(Vse_dannue.this);
 
       @Override
       protected Cursor doInBackground(Object... params)
       {
          dbConnector.open();
          return dbConnector.getAllContacts(); 
       } 
       
       @Override
       protected void onPostExecute(Cursor result)
       {
          conAdapter.changeCursor(result); // устанавливает курсор адаптера
          dbConnector.close();
       } 
         
    }
    
    
    
    
}
Добавлено через 50 минут
Подскажите пожалуйста, все варианты перепробывал ничего не помогает

Добавлено через 44 минуты
Я так понял что проблема в SimpleCursorAdapter, необходимо как то масив с данными по другому отображать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.07.2013, 23:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не выполняется поиск в ListView (Программирование Android):

Поиск по listview - Программирование Android
Есть listview в котором около 250 позиций. Вывожу все при полощи Custom Adapter. Как осуществить поиск по нему через EditText?

Поиск по записям ListView - Программирование Android
Низнаю как сформулировать чтоб меня поняли... есть у меня поиск по записям ListView, все он ищет и работает как мне надо, но есть...

По буквенный поиск в Listview - Программирование Android
Добрый вечер ув. Программисты. Реализовал поиск по listView, но вот незадача(( он делает поиск только от начала текста. ...

Как реализовать поиск по Listview? - Программирование Android
Listview adapter public class ListViewAdapter extends BaseAdapter { TextView theme; TextView contacts; TextView...

Поиск в ListView с помощью SearchView - Программирование Android
Прикручиваю SearchView, чтобы фильтровать ListView: MenuItem ourSearchItem = menu.findItem(R.id.menu_item_search); ...

Поиск по ListView основанному на кастомном адаптере - Программирование Android
Есть кастомный адаптер. ListView сделан на его основе. Данные загружаются из БД. Делаю поиск по позициям листа. Дописал в класс кастомного...

8
Wenceslaus
Android Developer
130 / 130 / 4
Регистрация: 05.07.2013
Сообщений: 205
29.07.2013, 15:00 #2
Вам нужно дополнительно использовать setFilterQueryProvider для Adapter'а, так как в данном случае проходит фильтрация данных из БД, а не массива элементов (как в случае с ArrayAdapter).
Java
1
2
3
4
5
6
7
8
9
10
conAdapter.setFilterQueryProvider(new FilterQueryProvider() {
 
  public Cursor runQuery(CharSequence constraint) {
    //uri, projection, и sortOrder аналогичные предыдущему запросу
    //selection и selectionArgs зависят от constraint и выполняют роль фильтра
    Cursor cursor = managedQuery(uri, projection, selection, selectionArgs, sortOrder);
    return cursor;
  }
 
});
0
Sherstyuk_Ya_N
4 / 4 / 0
Регистрация: 22.07.2013
Сообщений: 30
29.07.2013, 15:33  [ТС] #3
Куда мне это вставить чтоб заработало???
0
Wenceslaus
Android Developer
130 / 130 / 4
Регистрация: 05.07.2013
Сообщений: 205
29.07.2013, 16:37 #4
В onCreate, после создания conAdapter'а, ведь это фактически его настройка.
0
Sherstyuk_Ya_N
4 / 4 / 0
Регистрация: 22.07.2013
Сообщений: 30
29.07.2013, 18:11  [ТС] #5
Вот в uri, projection, selection, selectionArgs, sortOrder пишет ошибку что вместо или как туда запихнуть в моём случае
0
Wenceslaus
Android Developer
130 / 130 / 4
Регистрация: 05.07.2013
Сообщений: 205
29.07.2013, 18:58 #6
У вас есть метод dbConnector.getAllContacts(), который возвращает данные с таблицы. В методе есть запрос на выборку этих данных. Так вот, он должен быть аналогичен managedQuery(uri, projection, selection, selectionArgs, sortOrder), но с дополнительным условием выборки (фильтром), где:
uri - ссылка на базу данных.
projection - список столбцов для выборки.
selection - условие выборки (фильтр).
selectionArgs - значения для условия (усли не указаны в selection)
sortOrder - сортировка.
Что конкретно туда писать, что бы вставить и заработало, я не скажу, ибо не телепат.

Если возникают сложности с кодом, то сделайте следующим образом:
Java
1
2
3
4
5
6
7
8
9
10
DatabaseConnector dbConnector; //объявите глобально в Activity, а не в GetContacts
 
conAdapter.setFilterQueryProvider(new FilterQueryProvider() {
 
  public Cursor runQuery(CharSequence constraint) {
    Cursor cursor = dbConnector.getFilteredContacts(constraint); //получение фильтрованных данных
    return cursor;
  }
 
});
А в классе DatabaseConnector создайте метод getFilteredContacts(String filter), аналогичный getAllContacts(), но с дополнительным условием выборки, например "name LIKE '%filter%'".
0
Sherstyuk_Ya_N
4 / 4 / 0
Регистрация: 22.07.2013
Сообщений: 30
29.07.2013, 20:07  [ТС] #7
Ну вот мой DatabaseConnector
************************

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package database;
 
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
 
 
public class DatabaseConnector {
    
    private static final String DB_NAME = "Koordinat.db";//===== Имя базы данных, koord_knp- имя таблицы
    private SQLiteDatabase database;
    private DatabaseOpenHelper dbOpenHelper;
    
       
    public DatabaseConnector(Context context) {
        
        dbOpenHelper = new DatabaseOpenHelper(context, DB_NAME, null, 1);
        
    }
    
       public void open() throws SQLException 
       {
          //открытой базы данных при чтении / записи режима
          database = dbOpenHelper.getWritableDatabase();
       } 
 
       public void close() 
       {
          if (database != null)
             database.close();
       }       
       
       public void insertContact(String name, String xzeli, String yzeli, String hzeli) 
               {
                  ContentValues newCon = new ContentValues();
                  newCon.put("name", name);
                  newCon.put("xzeli", xzeli);
                  newCon.put("yzeli", yzeli);
                  newCon.put("hzeli", hzeli);
 
                  open();
                  database.insert("koord_knp", null, newCon);
                  close();
               }
 
            
               public void updateContact(long id, String name, String xzeli,String yzeli,String hzeli) 
               {
                  ContentValues editCon = new ContentValues();
                  editCon.put("name", name);
                  editCon.put("xzeli", xzeli);
                  editCon.put("yzeli", yzeli);
                  editCon.put("hzeli", hzeli);
 
                  open();
                  database.update("koord_knp", editCon, "_id=" + id, null);
                  close();
               }
 
              
               public Cursor getAllContacts() 
               {
                  return database.query("koord_knp", new String[] {"_id", "name"}, 
                     null, null, null, null, "name");
               }
 
               public Cursor getOneContact(long id) 
               {
                  return database.query("koord_knp", null, "_id=" + id, null, null, null, null, null);
               }
               
               public void deleteContact(long id) 
               {
                  open(); 
                  database.delete("koord_knp", "_id=" + id, null);
                  close();
               }
}
А вот где я хочу сделать поиск
************************


Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
 
import database.DatabaseConnector;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.CursorAdapter;
import android.widget.EditText;
import android.widget.FilterQueryProvider;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
 
public class Vse_dannue extends Activity {
    
    public static final String ROW_ID = "row_id";
     private ListView lvMain;//===== Список с наименованиями данных
     private CursorAdapter conAdapter;
     EditText inputSearch;
    // ArrayList for Listview
        ArrayList<HashMap<String, String>> productList;
        ArrayAdapter<String> adapter;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.vse_dannue_form);
        
        inputSearch = (EditText) findViewById(R.id.inputSearch);
        //===== Вывод в ListView =====
        lvMain = (ListView) findViewById(R.id.lvMain);
        lvMain.setOnItemClickListener(viewConListener);
        
       String[] from = new String[] { "name"};
       int[] to = new int[] { R.id.textView_name_costom };
       conAdapter = new SimpleCursorAdapter(this, R.layout.list, null, from, to);
        
        lvMain.setAdapter(conAdapter);
        
        final DatabaseConnector dbConnector = null; //объявите глобально в Activity, а не в GetContacts
        
        conAdapter.setFilterQueryProvider(new FilterQueryProvider() {
         
          public Cursor runQuery(CharSequence constraint) {
            Cursor cursor = dbConnector.getAllContacts(); //получение фильтрованных данных
            return cursor;
          }
         
        });
       
        //***************
        inputSearch.addTextChangedListener(new TextWatcher() {
            
            public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
                // When user changed the Text
                Vse_dannue.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                          
            }
        });
        
        //****************
        
     
    }
    
    OnItemClickListener viewConListener = new OnItemClickListener() 
    {
       public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) 
       {         
          Intent viewCon = new Intent(Vse_dannue.this, Pokaz_dan.class);
          viewCon.putExtra(ROW_ID, arg3);
          startActivity(viewCon);
       }
    };
    
    protected void onResume() 
    {
       super.onResume();  
       new GetContacts().execute((Object[]) null);
     } 
    
    protected void onStop() 
    {
       Cursor cursor = conAdapter.getCursor();
       
       if (cursor != null) 
          cursor.deactivate();
       
       conAdapter.changeCursor(null);
       super.onStop();
    }   
    
    private class GetContacts extends AsyncTask<Object, Object, Cursor> 
    {
       DatabaseConnector dbConnector = new DatabaseConnector(Vse_dannue.this);
 
       @Override
       protected Cursor doInBackground(Object... params)
       {
          dbConnector.open();
          return dbConnector.getAllContacts(); 
       } 
       
       @Override
       protected void onPostExecute(Cursor result)
       {
          conAdapter.changeCursor(result); // устанавливает курсор адаптера
          dbConnector.close();
       } 
         
    }
    
    
    
    
}
Добавлено через 43 минуты
Ну подскажите куча таких вопросов в интернете и не один не закрыт, подскажите кто знает

Добавлено через 4 минуты
Цитата Сообщение от Wenceslaus Посмотреть сообщение
У вас есть метод dbConnector.getAllContacts(), который возвращает данные с таблицы. В методе есть запрос на выборку этих данных. Так вот, он должен быть аналогичен managedQuery(uri, projection, selection, selectionArgs, sortOrder), но с дополнительным условием выборки (фильтром), где:
uri - ссылка на базу данных.
projection - список столбцов для выборки.
selection - условие выборки (фильтр).
selectionArgs - значения для условия (усли не указаны в selection)
sortOrder - сортировка.
Что конкретно туда писать, что бы вставить и заработало, я не скажу, ибо не телепат.

Если возникают сложности с кодом, то сделайте следующим образом:
Java
1
2
3
4
5
6
7
8
9
10
DatabaseConnector dbConnector; //объявите глобально в Activity, а не в GetContacts
 
conAdapter.setFilterQueryProvider(new FilterQueryProvider() {
 
  public Cursor runQuery(CharSequence constraint) {
    Cursor cursor = dbConnector.getFilteredContacts(constraint); //получение фильтрованных данных
    return cursor;
  }
 
});
А в классе DatabaseConnector создайте метод getFilteredContacts(String filter), аналогичный getAllContacts(), но с дополнительным условием выборки, например "name LIKE '%filter%'".
Подскажите пожалуйста, ну не вьезжаю я
0
Wenceslaus
Android Developer
130 / 130 / 4
Регистрация: 05.07.2013
Сообщений: 205
30.07.2013, 12:27 #8
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package com.example.simllist;
 
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
 
public class DatabaseConnector {
 
    private static final String DB_NAME = "Koordinat.db";// ===== Имя базы данных, koord_knp- имя таблицы
    private SQLiteDatabase database;
    private DatabaseOpenHelper dbOpenHelper;
 
    public DatabaseConnector(Context context) {
 
        dbOpenHelper = new DatabaseOpenHelper(context, DB_NAME, null, 1);
 
    }
 
    public void open() throws SQLException {
        // открытой базы данных при чтении / записи режима
        database = dbOpenHelper.getWritableDatabase();
    }
 
    public void close() {
        if (database != null)
            database.close();
    }
 
    public void insertContact(String name, String xzeli, String yzeli, String hzeli) {
        ContentValues newCon = new ContentValues();
        newCon.put("name", name);
        newCon.put("xzeli", xzeli);
        newCon.put("yzeli", yzeli);
        newCon.put("hzeli", hzeli);
 
        open();
        database.insert("koord_knp", null, newCon);
        close();
    }
 
    public void updateContact(long id, String name, String xzeli, String yzeli, String hzeli) {
        ContentValues editCon = new ContentValues();
        editCon.put("name", name);
        editCon.put("xzeli", xzeli);
        editCon.put("yzeli", yzeli);
        editCon.put("hzeli", hzeli);
 
        open();
        database.update("koord_knp", editCon, "_id=" + id, null);
        close();
    }
 
    public Cursor getAllContacts() {
        return database.query("koord_knp", new String[] { "_id", "name" }, null, null, null, null, "name");
    }
 
    // получение фильтрованных данных
    public Cursor getFilteredContacts(String filter) {
        return database.query("koord_knp", new String[] { "_id", "name" }, "name LIKE ?", new String[] { "%"+filter+"%" }, null, null, "name");
    }
 
    public Cursor getOneContact(long id) {
        return database.query("koord_knp", null, "_id=" + id, null, null, null, null, null);
    }
 
    public void deleteContact(long id) {
        open();
        database.delete("koord_knp", "_id=" + id, null);
        close();
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
package com.example.simllist;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
 
import database.DatabaseConnector;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.CursorAdapter;
import android.widget.EditText;
import android.widget.FilterQueryProvider;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
 
public class Vse_dannue extends Activity {
 
    public static final String ROW_ID = "row_id";
    private ListView lvMain;// ===== Список с наименованиями данных
    private CursorAdapter conAdapter;
    EditText inputSearch;
    // ArrayList for Listview
    ArrayList<HashMap<String, String>> productList;
    ArrayAdapter<String> adapter;
    DatabaseConnector dbConnector; // глобально для Activity
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.vse_dannue_form);
 
        dbConnector = new DatabaseConnector(this);
 
        inputSearch = (EditText) findViewById(R.id.inputSearch);
        // ===== Вывод в ListView =====
        lvMain = (ListView) findViewById(R.id.lvMain);
        lvMain.setOnItemClickListener(viewConListener);
 
        String[] from = new String[] { "name" };
        int[] to = new int[] { R.id.textView_name_costom };
        conAdapter = new SimpleCursorAdapter(this, R.layout.list, null, from, to);
 
        conAdapter.setFilterQueryProvider(new FilterQueryProvider() {
 
            public Cursor runQuery(CharSequence constraint) {
                Cursor cursor = dbConnector.getFilteredContacts(constraint.toString()); // получение фильтрованных данных
                return cursor;
            }
 
        });
 
        lvMain.setAdapter(conAdapter);
 
        // ***************
        inputSearch.addTextChangedListener(new TextWatcher() {
 
            public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
                // When user changed the Text
                Vse_dannue.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
            }
        });
 
        // ****************
 
    }
 
    OnItemClickListener viewConListener = new OnItemClickListener() {
 
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
            Intent viewCon = new Intent(Vse_dannue.this, Pokaz_dan.class);
            viewCon.putExtra(ROW_ID, arg3);
            startActivity(viewCon);
        }
    };
 
    protected void onResume() {
        super.onResume();
        new GetContacts().execute((Object[]) null);
    }
    
    
 
    @Override
    protected void onStart() {
        super.onStart();
        //открытие базы при старте Activity
        dbConnector.open();
    }
 
    protected void onStop() {
        Cursor cursor = conAdapter.getCursor();
 
        if (cursor != null)
            cursor.deactivate();
 
        conAdapter.changeCursor(null);
        //Закрытие базы при остановке Activity
        dbConnector.close();
        super.onStop();
    }
 
    private class GetContacts extends AsyncTask<Object, Object, Cursor> {
 
        @Override
        protected Cursor doInBackground(Object... params) {
            return dbConnector.getAllContacts();
        }
 
        @Override
        protected void onPostExecute(Cursor result) {
            conAdapter.changeCursor(result); // устанавливает курсор адаптера
        }
 
    }
 
}
0
Sherstyuk_Ya_N
4 / 4 / 0
Регистрация: 22.07.2013
Сообщений: 30
30.07.2013, 19:24  [ТС] #9
Ошибка

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
07-30 18:20:33.882: I/ActivityManager(2299): onPause called: sherstyuk.ya.n.bd_str.MainActivity
07-30 18:20:39.512: D/AndroidRuntime(2299): Shutting down VM
07-30 18:20:39.532: W/dalvikvm(2299): threadid=1: thread exiting with uncaught exception (group=0x4001d820)
07-30 18:20:39.592: E/AndroidRuntime(2299): FATAL EXCEPTION: main
07-30 18:20:39.592: E/AndroidRuntime(2299): java.lang.NullPointerException
07-30 18:20:39.592: E/AndroidRuntime(2299):     at sherstyuk.ya.n.bd_str.Vse_dannue$3.onTextChanged(Vse_dannue.java:68)
07-30 18:20:39.592: E/AndroidRuntime(2299):     at android.widget.TextView.sendOnTextChanged(TextView.java:6582)
07-30 18:20:39.592: E/AndroidRuntime(2299):     at android.widget.TextView.handleTextChanged(TextView.java:6623)
07-30 18:20:39.592: E/AndroidRuntime(2299):     at android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:6767)
07-30 18:20:39.592: E/AndroidRuntime(2299):     at android.text.SpannableStringBuilder.sendTextChange(SpannableStringBuilder.java:920)
07-30 18:20:39.592: E/AndroidRuntime(2299):     at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:383)
07-30 18:20:39.592: E/AndroidRuntime(2299):     at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:300)
07-30 18:20:39.592: E/AndroidRuntime(2299):     at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:463)
07-30 18:20:39.592: E/AndroidRuntime(2299):     at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:440)
07-30 18:20:39.592: E/AndroidRuntime(2299):     at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:59)
07-30 18:20:39.592: E/AndroidRuntime(2299):     at android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:614)
07-30 18:20:39.592: E/AndroidRuntime(2299):     at android.view.inputmethod.BaseInputConnection.commitText(BaseInputConnection.java:205)
07-30 18:20:39.592: E/AndroidRuntime(2299):     at com.android.internal.widget.EditableInputConnection.commitText(EditableInputConnection.java:151)
07-30 18:20:39.592: E/AndroidRuntime(2299):     at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:278)
07-30 18:20:39.592: E/AndroidRuntime(2299):     at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:104)
07-30 18:20:39.592: E/AndroidRuntime(2299):     at android.os.Handler.dispatchMessage(Handler.java:130)
07-30 18:20:39.592: E/AndroidRuntime(2299):     at android.os.Looper.loop(Looper.java:154)
07-30 18:20:39.592: E/AndroidRuntime(2299):     at android.app.ActivityThread.main(ActivityThread.java:4668)
07-30 18:20:39.592: E/AndroidRuntime(2299):     at java.lang.reflect.Method.invokeNative(Native Method)
07-30 18:20:39.592: E/AndroidRuntime(2299):     at java.lang.reflect.Method.invoke(Method.java:552)
07-30 18:20:39.592: E/AndroidRuntime(2299):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:917)
07-30 18:20:39.592: E/AndroidRuntime(2299):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:674)
07-30 18:20:39.592: E/AndroidRuntime(2299):     at dalvik.system.NativeStart.main(Native Method)
07-30 18:20:41.612: I/Process(2299): Sending signal. PID: 2299 SIG: 9
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.07.2013, 19:24
Привет! Вот еще темы с ответами:

Живой поиск через один EditText в разных Listview ? - Программирование Android
есть EditText для поиска по спискам в ToolBar MainActivity. при вводе текста в MainActivity вызывается: @Override ...

ListView. После добавления кнопки перестал быть доступен сам ListView - Программирование Android
Кастомизировал ListView с помощью нескольких TextView. Но после того, как добавил ImageButton сам список стал недоступен для клика, а...

Listview вывод данных и переход по нажатию на другой Listview SQLite - Программирование Android
Доброго извините за название темы, долго не мог сформировать название, В общем у меня беда с пытаюсь написать программу где первый экран...

Данные из SQlite в ListView, обработка события ListView - Программирование Android
Ребят, есть БД, ListView. Надо при нажатии на строчку ListView вытащить данные int из БД. mList.setOnItemClickListener(new...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Yandex
Объявления
30.07.2013, 19:24
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru