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

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

Войти
Регистрация
Восстановить пароль
 
ersin
1 / 1 / 0
Регистрация: 14.02.2013
Сообщений: 130
#1

Как реализовать поиск по Listview? - Программирование Android

05.06.2016, 17:28. Просмотров 311. Ответов 7
Метки нет (Все метки)

Listview adapter
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
public class ListViewAdapter extends BaseAdapter {
    TextView theme;
    TextView contacts;
    TextView price;
    ImageView photo;
    ImageView photo2;
    TextView discription;
    TextView status;
    // Declare Variables
    Context context;
    LayoutInflater inflater;
    
    ArrayList<HashMap<String, String>> data;
    ImageLoader imageLoader;
    HashMap<String, String> resultp = new HashMap<String, String>();
 
    public ListViewAdapter(Context context,
            ArrayList<HashMap<String, String>> arraylist) {
        this.context = context;
        data = arraylist;
        imageLoader = new ImageLoader(context);
    }
 
    @Override
    public int getCount() {
        return data.size();
    }
 
    @Override
    public Object getItem(int position) {
         return position;
    }
 
    @Override
    public long getItemId(int position) {
         return position;
    }
 
    public View getView(final int position, View convertView, ViewGroup parent) {
        // Declare Variables
        inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
         View itemView=convertView;
            if(convertView==null)
                itemView = inflater.inflate(R.layout.listview_item,  parent, false);
 
        
        
    
 
        //View itemView = inflater.inflate(R.layout.listview_item, parent, false);
        // Get the position
        resultp = data.get(position);
 
        // Locate the TextViews in listview_item.xml
        theme = (TextView) itemView.findViewById(R.id.theme);
        contacts = (TextView) itemView.findViewById(R.id.contacts);
        price = (TextView) itemView.findViewById(R.id.price);
        discription = (TextView) itemView.findViewById(R.id.discription);
        // Locate the ImageView in listview_item.xml
        photo = (ImageView) itemView.findViewById(R.id.photo);
 
        
        status = (TextView) itemView.findViewById(R.id.status);
        
        
        
 
        // Capture position and set results to the TextViews
        theme.setText(resultp.get(Uslugi.THEME));
        contacts.setText(resultp.get(Uslugi.CONTACTS));
        price.setText(resultp.get(Uslugi.PRICE));
        
        status.setText(resultp.get(Uslugi.STATUS));
        // Capture position and set results to the ImageView
        // Passes flag images URL into ImageLoader.class
        imageLoader.DisplayImage(resultp.get(Uslugi.PHOTO), photo);
        
        
        
        // Capture ListView item click
        
        
        itemView.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                
                // Get the position
                resultp = data.get(position);
                Intent intent = new Intent(context, MainActivity.class);
                // Pass all data rank
                intent.putExtra("theme", resultp.get(Uslugi.THEME));
                // Pass all data country
                
                intent.putExtra("status", resultp.get(Uslugi.STATUS));
                
                
                 
                    intent.putExtra("stickyView", resultp.get(Uslugi.THEME).toString());
                    
                    intent.putExtra("heroImageView", resultp.get(Uslugi.PHOTO).toString());
                    
                
                intent.putExtra("contacts", resultp.get(Uslugi.CONTACTS));
                // Pass all data population
                intent.putExtra("price",resultp.get(Uslugi.PRICE));
                // Pass all data flag
                
                intent.putExtra("photo", resultp.get(Uslugi.PHOTO));
                
                
                // Start SingleItemView Class
                intent.putExtra("discription", resultp.get(Uslugi.DISCRIPTION));
                context.startActivity(intent);
 
            }
        });
        return itemView;
        
        
        
    }
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2016, 17:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как реализовать поиск по Listview? (Программирование Android):

Как реализовать трехуровневое меню в ListView? - Программирование Android
Здравствуйте!Как вообще реализуются такие вещи в приложениях?Есть список меню из 4-х пунктов созданный с помощью ListView. Cамо собой...

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

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

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

Не выполняется поиск в ListView - Программирование Android
Вопрос таков имею базу данных с данными вывод имён в костомный ListView но поиска не выполняется. Брал пример всё работает в моём случае...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
puma3085
38 / 1 / 0
Регистрация: 27.03.2014
Сообщений: 38
06.06.2016, 19:40 #2
Можно, к примеру, реализовать класс, поля которого содержат данный для каждого itemView. Ну и хранить через ArrayList<> через который и производить поиск.
1
Frozik6k
12 / 12 / 7
Регистрация: 04.04.2016
Сообщений: 51
07.06.2016, 12:41 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Есть же конкретный arraylist который является данными для listview, в нем и нужно осуществлять поиск
1
ersin
1 / 1 / 0
Регистрация: 14.02.2013
Сообщений: 130
07.06.2016, 13:51  [ТС] #4
Цитата Сообщение от Frozik6k Посмотреть сообщение
Есть же конкретный arraylist который является данными для listview, в нем и нужно осуществлять поиск
Можно пример? Я еще новичок в этом деле .
0
Frozik6k
12 / 12 / 7
Регистрация: 04.04.2016
Сообщений: 51
07.06.2016, 18:50 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        Map<String, String> map = new HashMap<>();
        map.put("первый", "Владимир");
        map.put("второй", "Егор");
        map.put("третий", "Константин");
ListViewAdapter adapter = new ListViewAdapter(getApplicationContext(), map);
 
 
        String searchText = "Влад";
 
        for (Map.Entry<String, String> entry : map.entrySet()){
            String key = entry.getKey();
            String value = entry.getValue();
            if (value.contains(searchText)){
                Toast.makeText(getApplicationContext(), "key = " + key, Toast.LENGTH_LONG).show;
            }
        }
В адаптер передается только ссылка на map, если осуществлять изменения в map, они также отразятся в listView к которому прикреплен адаптер. Действительно и обратное, поиск в map, это все равно что поиск в listView, к которому подключен адаптер.
1
ersin
1 / 1 / 0
Регистрация: 14.02.2013
Сообщений: 130
08.06.2016, 03:15  [ТС] #6
Цитата Сообщение от Frozik6k Посмотреть сообщение
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        Map<String, String> map = new HashMap<>();
        map.put("первый", "Владимир");
        map.put("второй", "Егор");
        map.put("третий", "Константин");
ListViewAdapter adapter = new ListViewAdapter(getApplicationContext(), map);
 
 
        String searchText = "Влад";
 
        for (Map.Entry<String, String> entry : map.entrySet()){
            String key = entry.getKey();
            String value = entry.getValue();
            if (value.contains(searchText)){
                Toast.makeText(getApplicationContext(), "key = " + key, Toast.LENGTH_LONG).show;
            }
        }
В адаптер передается только ссылка на map, если осуществлять изменения в map, они также отразятся в listView к которому прикреплен адаптер. Действительно и обратное, поиск в map, это все равно что поиск в 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
private class SearchJSON extends AsyncTask<Void, Void, Void> {
 
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            // Create a progressdialog
            mProgressDialog = new ProgressDialog(Uslugi.this);
            // Set progressdialog title
            mProgressDialog.setTitle("EscApp");
            // Set progressdialog message
            mProgressDialog.setMessage("Подключение к серверу");
            mProgressDialog.setIndeterminate(false);
            // Show progressdialog
            mProgressDialog.show();
        }
 
        @Override
        protected Void doInBackground(Void... params) {
            // Create an array
            arraylist = new ArrayList<HashMap<String, String>>();
            // Retrieve JSON Objects from the given URL address
            jsonobject = JSONfunctions
                    .getJSONfromURL(Link);
 
            try {
                // Locate the array name in JSON
                jsonarray = jsonobject.getJSONArray("job");
 
                for (int i = 0; i < jsonarray.length(); i++) {
                    HashMap<String, String> map = new HashMap<String, String>();
                    jsonobject = jsonarray.getJSONObject(i);
                    // Retrive JSON Objects
                
                    
                    
                    map.put("theme", jsonobject.getString("theme"));
                    map.put("contacts", jsonobject.getString("contacts"));
                    map.put("price", jsonobject.getString("price"));
                    map.put("photo", jsonobject.getString("photo"));
                    map.put("discription", jsonobject.getString("discription"));
                    map.put("discription", jsonobject.getString("discription"));
                    map.put("status", jsonobject.getString("status"));
                    
                    
                    
                    // Set the JSON Objects into the array
                    arraylist.add(map);
                }
            } catch (JSONException e) {
                Log.e("Error--------------------------------------------------------------------", e.getMessage());
                e.printStackTrace();
            }
            return null;
        }
 
        @Override
        protected void onPostExecute(Void args) {
            // Locate the listview in listview_main.xml
            listview = (ListView) findViewById(R.id.list);
            // Pass the results into ListViewAdapter.java
            adapter = new ListViewAdapter(Uslugi.this, arraylist);
            // Set the adapter to the ListView
            listview.setAdapter(adapter);
            // Close the progressdialog
            mProgressDialog.dismiss();
        
        }
    }
    
    
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_uslugi, menu);
        return true;
    }
0
Frozik6k
12 / 12 / 7
Регистрация: 04.04.2016
Сообщений: 51
08.06.2016, 05:01 #7
в arraylist нужно осуществлять поиск.
Java
1
2
3
for(HashMap map : arraylist){
// здесь поиск по map
}
для поиска можно в ActiveBar установить виджет поиска.
1
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
08.06.2016, 07:41 #8
TextWatcher и не надо тут изобретать велосипед.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2016, 07:41
Привет! Вот еще темы с ответами:

ListView, ToggleButton, SQLite, CursorAdapter. Как найти idItem в ListView, где была нажата ToggleButton? - Программирование Android
Добрый день. Затрудняюсь понять один момент: У меня есть ListView, который заполнен Items. Каждый Item - это свой XML. Пока...

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

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

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


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

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

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