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

Поиск по записям ListView - Android

Войти
Регистрация
Восстановить пароль
 
kirawa
33 / 33 / 1
Регистрация: 12.11.2013
Сообщений: 336
12.03.2014, 10:06     Поиск по записям ListView #1
Низнаю как сформулировать чтоб меня поняли... есть у меня поиск по записям ListView, все он ищет и работает как мне надо, но есть проблема... например при отсевании поиском итемов остается один итем, и при клике на него я перехажу на другую активити где получаю содержимое итема по id позиции элемента как я понел, а не id базы... Помогите разобраться пожалуйста, а то я что то не со всем понимаю с чем едят объект Bundle... и как сюда передать или получить правильный id


Java
1
2
3
4
5
6
7
_id = null;
        Bundle bundle = getIntent().getExtras();
        if (bundle != null){
            _id = bundle.getLong(DBaseAdapter.KEY_ID);
            populateFields();
        }
    }
Java
1
2
3
4
5
6
7
8
9
10
 private void populateFields() {
        if (_id != null){
            Cursor todo = adapter.selectNote(_id);
            if (todo != null){
            while (todo.moveToNext()){
            note.setText(todo.getString(todo.getColumnIndex(DBaseAdapter.KEY_NOTE)));
            }
            }
        }
    }
Добавлено через 22 минуты
Java
1
2
3
4
5
6
 protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
        Intent intent = new Intent(MainActivity.this,NewNote.class);
        intent.putExtra(DBaseAdapter.KEY_ID, id);
        startActivityForResult(intent,ACTIVITY_EDIT);
    }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kirawa
33 / 33 / 1
Регистрация: 12.11.2013
Сообщений: 336
12.03.2014, 12:42  [ТС]     Поиск по записям ListView #2
вот проблема в картинке
Миниатюры
Поиск по записям ListView  
Netscape
 Аватар для Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
12.03.2014, 14:50     Поиск по записям ListView #3
Полагаю, в адаптере вместо id возвращается позиция.
kirawa
33 / 33 / 1
Регистрация: 12.11.2013
Сообщений: 336
12.03.2014, 15:15  [ТС]     Поиск по записям ListView #4
Цитата Сообщение от Netscape Посмотреть сообщение
Полагаю, в адаптере вместо id возвращается позиция.
Цитата Сообщение от kirawa Посмотреть сообщение
protected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id);
вот в этом методе просто все основывается на позиции, видно же...
Например
listView.getAdapter().getItemId(position); == id

я ваще уже хз как нае**ать систему
Netscape
 Аватар для Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
12.03.2014, 15:30     Поиск по записям ListView #5
Цитата Сообщение от kirawa Посмотреть сообщение
видно же
нет, не видно.
а вот в исходном коде вашего адаптера должно быть видно.
Gabberr
 Аватар для Gabberr
101 / 101 / 17
Регистрация: 13.10.2009
Сообщений: 402
12.03.2014, 15:31     Поиск по записям ListView #6
создайте под запись отдельный класс с полем id, а в адаптере манипулируйте объектами этого класса, чтоб можно было брать не прозицию элемента в списке, а id элемента списка.
если не понятно, могу написать пример.
kirawa
33 / 33 / 1
Регистрация: 12.11.2013
Сообщений: 336
12.03.2014, 15:46  [ТС]     Поиск по записям ListView #7
можно чуть чуть поподробнее, я просто не совсем понимаю в плане реализации как это будет выглядеть...вот мой адаптер
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
package com.greendield.note;
 
import android.app.Activity;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.view.LayoutInflater;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.ListView;
import android.widget.TextView;
 
import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
 
public class CustomAdapter extends BaseAdapter implements Filterable {
 
    private final ArrayList<Note> allItems;
    private ArrayList<Note> subItems;
    Context ctx;
    ListView listView;
 
 
    public CustomAdapter(Context context, ArrayList<Note> note, ListView _listView) {
       this.allItems = note;
       this.subItems = note;
       ctx = context;
       listView =_listView;
 
    }
    static class ViewHolder {
        TextView text;
        TextView textDate;
    }
 
    @Override
    public int getCount() {
        return subItems.size();
    }
 
    @Override
    public Object getItem(int i) {
        return allItems.get(i);
    }
 
    @Override
    public long getItemId(int i) {
        return Long.parseLong(allItems.get(i).getId());
    }
 
    @Override
    public View getView(final int i, View view, ViewGroup viewGroup) {
        View rowView = view;
 
        if (rowView == null){
            LayoutInflater layoutInflater = ((Activity) ctx).getLayoutInflater();
            rowView = layoutInflater.inflate(R.layout.view_row,viewGroup,false);
            ViewHolder holder = new ViewHolder();
            holder.text = (TextView)rowView.findViewById(R.id.item_text);
            holder.textDate = (TextView)rowView.findViewById(R.id.item_textDate);
            rowView.setTag(holder);
        }
        Note notes = subItems.get(i);
        ViewHolder holder = (ViewHolder)rowView.getTag();
        SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy HH:mm");
        long l = Long.parseLong(notes.getData());
        String time = sdf.format(new Date(l));
        holder.textDate.setText(time);
        holder.text.setText(notes.getName());
        return rowView;
    }
 
    public Filter getFilter(){
        return new Filter() {
            @Override
            protected FilterResults performFiltering(CharSequence charSequence) {
                FilterResults results = new FilterResults();
                ArrayList<Note> list = new ArrayList<Note>();
                if (charSequence != null && charSequence.toString().length() > 0){
                    for (Note note : allItems) {
                        String s = note.getName();
                        String[] name = s.split(" ");
 
                        for (String aName : name) {
                            if (aName.toUpperCase().startsWith(charSequence.toString().toUpperCase())){
                                list.add(note);
                            }
 
                        }
                    }
                    results.values = list;
                    results.count = list.size();
                    }else {
                    synchronized (allItems){
                        results.values = allItems;
                        results.count = allItems.size();
                    }
                }
 
                return results;
            }
 
            @Override
            protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
                subItems = (ArrayList<Note>) filterResults.values;
                notifyDataSetChanged();
            }
        };
    }
}
есть еще вспомогательный класс
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
package com.greendield.note;
 
public class Note {
    String name;
    String id;
    boolean selected;
    String data;
 
    public Note(String _name,String _id,String _date, boolean _selected) {
        name  = _name;
        id = _id;
        selected = _selected;
        data = _date;
    }
    public Note(){
 
    }
    public String getName(){
        return name;
    }
    public String getId(){
        return id;
    }
    public void setName(String name){
        this.name = name;
    }
    public void setId(String id){
        this.id = id;
    }
    public boolean getSelected() {
        return selected;
    }
    public void setSelected(boolean selected) {
        this.selected = selected;
    }
    public String getData(){
       return data;
    }
}
Gabberr
 Аватар для Gabberr
101 / 101 / 17
Регистрация: 13.10.2009
Сообщений: 402
12.03.2014, 15:51     Поиск по записям ListView #8
ну вот у вас класс Note есть уже, по клику на элемент списка, обращайтесь к адаптеру и вызывайте getItemId.
kirawa
33 / 33 / 1
Регистрация: 12.11.2013
Сообщений: 336
12.03.2014, 15:54  [ТС]     Поиск по записям ListView #9
а что я в параметр то ему дам

Добавлено через 20 секунд
позицию?
Gabberr
 Аватар для Gabberr
101 / 101 / 17
Регистрация: 13.10.2009
Сообщений: 402
12.03.2014, 16:04     Поиск по записям ListView #10
именно, а почему нет?
kirawa
33 / 33 / 1
Регистрация: 12.11.2013
Сообщений: 336
12.03.2014, 16:06  [ТС]     Поиск по записям ListView #11
ну и получите эту же проблему взгляните еще раз на картинку которую я вложил
Gabberr
 Аватар для Gabberr
101 / 101 / 17
Регистрация: 13.10.2009
Сообщений: 402
12.03.2014, 16:41     Поиск по записям ListView #12
после поиска должен формироваться новый адаптер или редактироваться старый, чтоб по позиции был доступ к тому самому элементу
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.03.2014, 16:58     Поиск по записям ListView
Еще ссылки по теме:

Как реализовать поиск по Listview? Android
Живой поиск через один EditText в разных Listview ? Android
Оформление ListView Android
Поиск по listview Android
ListView и image Android

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

Или воспользуйтесь поиском по форуму:
kirawa
33 / 33 / 1
Регистрация: 12.11.2013
Сообщений: 336
12.03.2014, 16:58  [ТС]     Поиск по записям ListView #13
в плане реализации только вот непонятно как его формировать. Мне поможет только пример
Yandex
Объявления
12.03.2014, 16:58     Поиск по записям ListView
Ответ Создать тему
Опции темы

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