Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
Показать сообщение отдельно
Adverte
0 / 0 / 0
Регистрация: 14.04.2015
Сообщений: 7
0

Получить JSON и передать все его параметры его в Intent. Использован автофильтр

12.10.2015, 04:33. Просмотров 963. Ответов 3
Метки (Все метки)

Всем привет. Я тут запутался, помогите разобраться.
Стоит задача выполнить такой функционал: получить данные JSON, один из параметров JSON формирует выпадающий список автозаполнения, по нажатию на элемент данные выбранного элемента должны попасть в Intent

Сейчас сделано применительно к одному параметру "name", он отображается в поле ввода и по готовности берётся из поля ввода и добавляется в Intent. Это работает. Как включить в ответ остальные неотображаемые но полученные в JSON другие параметры ("code", "rname")

Что сделано
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
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.autocomplete);
        
        mText = (TextView)findViewById(R.id.text);
        mAutoComplete = (AutoCompleteTextView) findViewById(R.id.auto_complete);
        ArrayAdapter<String> adapter = new PlacesAutoCompleteAdapter(this, R.layout.list_item);
        mAutoComplete.setAdapter(adapter);
 
        mAutoComplete.setOnItemClickListener(this);  //отрабатывает нажатия на список
    
    }
    
    public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
        String str = (String) adapterView.getItemAtPosition(position);
        enterClicked(str);
    }
    
    protected void enterClicked(String str) {  
        // TODO Auto-generated method stub
        Intent result = new Intent();
        result.putExtra(TAG, str);
        setResult(RESULT_OK, result);
 
        // TODO - Finish the Activity
        finish();
    }
файл PlacesAutoCompleteAdapter.java запрашивает и обрабатывает JSON, формирует список автозаполнения
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
public class PlacesAutoCompleteAdapter extends ArrayAdapter<String> implements Filterable {
    private ArrayList<String> resultList;
    private ConnectTask bgt;
<..>
   public PlacesAutoCompleteAdapter(Context context, int textViewResourceId) {
        super(context, textViewResourceId);
    }
 
    private ArrayList<String> autocomplete(String input) {
        ArrayList<String> citylist = null;
    
    List<NameValuePair> apiParams = new ArrayList<NameValuePair>(2);
        apiParams.add(new BasicNameValuePair("appKey", "XXXXXXXXXXXXXXXXX"));
        apiParams.add(new BasicNameValuePair("requestText", input));
        bgt = new ConnectTask(MAP_API_URL, "POST", apiParams);  //запрашивает сервер  и получает JSON
        
        try {
            JSONArray cityJSON = bgt.execute().get();
            
            citylist = new ArrayList<String>(cityJSON.length());
            // looping through all citylist
            for (int i = 0; i < cityJSON.length(); i++) {
 
                JSONObject d = cityJSON.getJSONObject(i);
 
                // Storing each json item in variable
 
                String rname = d.getString(REGNAME);
                String srch = d.getString(SEARCH);
                String code = d.getString(CODE);
                String name = d.getString(NAME);
 
                citylist.add(new String(name));  // добавляем один параметр по нему и фильтруем
 
            } //for
        } //try
        catch (Exception e) {
            Log.e("Buffer Error1", "Error converting result " + e.toString());
        }
            return citylist;
    }
 
//ниже в коде реализована работа автофильтра
    @Override
    public int getCount() {
        return resultList.size();
    }
 
    @Override
    public String getItem(int index) {
        return resultList.get(index);
    }
 
    @Override
    public Filter getFilter() {
        Filter filter = new Filter() {
            @Override
            protected FilterResults performFiltering(CharSequence constraint) {
                FilterResults filterResults = new FilterResults();
                if (constraint != null) {
                    // Retrieve the autocomplete results.
                    resultList = autocomplete(constraint.toString());
 
                    // Assign the data to the FilterResults
                    filterResults.values = resultList;
                    filterResults.count = resultList.size();
                }
                return filterResults;
            }
 
            @Override
            protected void publishResults(CharSequence constraint, FilterResults results) {
                if (results != null && results.count > 0) {
                    notifyDataSetChanged();
                }
                else {
                    notifyDataSetInvalidated();
                }
            }};
        return filter;
    }
 
}


Вернуться к обсуждению:
Получить JSON и передать все его параметры его в Intent. Использован автофильтр
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.10.2015, 04:33
Готовые ответы и решения:

Получить json в приложении и вывести его в listview во фрагмент
Здравствуйте, у меня такая проблема не могу разобраться как получить json в...

RequestCode - хранится ли он в Intent, и как его узнать?
Есть идея: изменить в onCreate конфигурацию активити в зависимости от...

Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER]
Выдает такую ошибку, хотя смартфон видит, он разрешает отладку, при запуске...

Передать адаптер в Intent
Как это сделать??? Создал свой адаптер (My_adapter) для списка цветных строк и...

Динамический textview и его параметры
Люди помогите пожалуйста :cry:, как мне динамическому listview задать...

3
Другие темы раздела
Программирование Android Как поменять названия кнопок местами в Java? http://www.cyberforum.ru/android-dev/thread1550042.html
есть поле из 5 кнопок с числами(названиями кнопок) от 1 до 5. Помогите написать код для того чтобы менять местами числа(названия) кнопок любую на любую. проблема в запоминании первой кнопки, чтобы...
Программирование Android Реализовать плагины для приложения Всем привет. Не знаю как правельней назвать то что мне нужно, но больше всего подходит плагин. Словом нужно часть ресурсов в внешнии приложения. Такое встречается во многих приложениях, например... http://www.cyberforum.ru/android-dev/thread1549963.html
Программирование Android Не открывает картинку через switch case
@Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch(checkedId) { case R.id.radioButton1: ...
Программирование Android NavigationView выделить выбранный элемент
Здравствуйте! Никак не пойму, как в NavigationView выделить пункт меню. menuItem.setChecked(true); doesn't work. Меню строится программно, т.к. заранее неизвестно количество элементов. Вот сам...
Программирование Android Mapsforge kinetic scrooling http://www.cyberforum.ru/android-dev/thread1549696.html
как реализовать kinetic scrooling для mapsforge карты
Программирование Android Подсчет трафика раздельно по двум сим (Андроид < 5.1) Добрый день! Нужна помощь по теме. Я долго искал в интернете, расковырял родной Settings.apk и обнаружил там использование следующих классов import android.net.INetworkStatsService; import... подробнее
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru