powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / Android [игнор отключен] [закрыт для гостей] / Плучить текстовое значение элемента в выпадающем списке
13 сообщений из 13, страница 1 из 1
Плучить текстовое значение элемента в выпадающем списке
    #38692381
Витяй1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет! Есть выпадающий список, нужно, при нажатии на выпадающие элементы списка, получить текстовое значение элемента.


Список создаю так:
Код: 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.
package com.radiofid.mapplayer;

public class Events extends Activity {

	private ArrayList<Map<String, String>> groupData;
	private ArrayList<Map<String, String>> childDataItem;
	private ArrayList<ArrayList<Map<String, String>>> childData;
	private Map<String, String> m;
	private ExpandableListView elvMain;
	private String jsonString1 = "";
	private String jsonString2 = "";
	private GetJsonData gjd1;
	private GetJsonData gjd2;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.event_list_layout);
		Gson gson = new Gson();
		gjd1 = new GetJsonData();
		gjd2 = new GetJsonData();
		gjd1.execute("http://....ссылка на json");
		gjd2.execute("http://....ссылка на json");
		try {
			jsonString1 = gjd1.get();
			jsonString2 = gjd2.get();
		} catch (InterruptedException e) {
		} catch (ExecutionException e) {
		}
		
		EventsListModel response1 = gson.fromJson(jsonString1, EventsListModel.class);
		ArrayList<String> response2 = gson.fromJson(jsonString2, ArrayList.class);

		groupData = new ArrayList<Map<String, String>>();
		String groupFrom[] = new String[] { "groupName" };
		int groupTo[] = new int[] { android.R.id.text1 };
		childData = new ArrayList<ArrayList<Map<String, String>>>();

		for (String group : response2) {
			m = new HashMap<String, String>();
			m.put("groupName", group);
			groupData.add(m);
		}

		Map<String, ArrayList<FieldValue>> deviceList = response1.getDevices();
		for (Entry<String, ArrayList<FieldValue>> entry : deviceList.entrySet()) {
			childDataItem = new ArrayList<Map<String, String>>();
			ArrayList<FieldValue> listValue = entry.getValue();
			for(FieldValue v : listValue){
				m = new HashMap<String, String>();
				m.put("childName", v.getEvent());
				childDataItem.add(m);
			}
			childData.add(childDataItem);
		}

		String childFrom[] = new String[] { "childName" };
		int childTo[] = new int[] { android.R.id.text1 };
		SimpleExpandableListAdapter adapter = new SimpleExpandableListAdapter(
				this, groupData,
				android.R.layout.simple_expandable_list_item_1, groupFrom,
				groupTo, childData, android.R.layout.simple_list_item_1,
				childFrom, childTo);

		elvMain = (ExpandableListView) findViewById(R.id.events_expandable_list);
		elvMain.setAdapter(adapter);
		
		
		elvMain.setOnChildClickListener(new OnChildClickListener(){

			@Override
			public boolean onChildClick(ExpandableListView parent, View v,
					int parentId, int childId, long arg4) {
				return false;
			}
			
		});
	}
	
	
	class GetJsonData extends AsyncTask<String, Void, String>{

		@Override
		protected String doInBackground(String... args) {
			String s = "";
			s = getJSON(args[0]);
			return s;
		}
		
	}
	
	  protected static String getJSON(String url) {
	        try {
	            URL u = new URL(url);
	            HttpURLConnection c = (HttpURLConnection) u.openConnection();
	            c.setRequestMethod("GET");
	            c.setRequestProperty("Content-length", "0");
	            c.setUseCaches(false);
	            c.setAllowUserInteraction(false);
	            c.connect();
	            int status = c.getResponseCode();

	            switch (status) {
	                case 200:
	                case 201:
	                    BufferedReader br = new BufferedReader(new InputStreamReader(c.getInputStream()));
	                    StringBuilder sb = new StringBuilder();
	                    String line;
	                    while ((line = br.readLine()) != null) {
	                        sb.append(line + "\n");
	                    }
	                    br.close();
	                    return sb.toString();
	            }

	        } catch (MalformedURLException ex) {

	        } catch (IOException ex) {

	        }
	        return null;
	    }

}



Классы EventsListModel и FieldValue:
Код: 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.
public class EventsListModel {
    private Map<String, ArrayList<FieldValue>> devices = new HashMap<String, ArrayList<FieldValue>>();

    EventsListModel(Map<String, ArrayList<FieldValue>> devices){
        this.devices = devices;
    }
    public Map<String, ArrayList<FieldValue>> getDevices() {
        return devices;
    }

    public void setDevices(Map<String, ArrayList<FieldValue>> devices) {
        this.devices = devices;
    }

    
}

__________________________________________________________________

public class FieldValue {
    private String event;
    private boolean value;

    FieldValue(String event, boolean value){
        this.event = event;
        this.value = value;
    }
    
    public String getEvent() {
        return event;
    }

    public void setEvent(String event) {
        this.event = event;
    }

    public boolean isValue() {
        return value;
    }

    public void setValue(boolean value) {
        this.value = value;
    }
}


Сам список выглядит так:

Соответственно, нужно получить переменную String = "car2" и String = "bb"(в зависимости от того, на какой элемент нажать), а методом setOnChildClickListener удается получить только их id-шники. Понимаю, что нужно как-то адаптер приобщать, но запутался что именно нужно делать, помогите, плиз((
...
Рейтинг: 0 / 0
Плучить текстовое значение элемента в выпадающем списке
    #38692690
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Плучить текстовое значение элемента в выпадающем списке
    #38693253
Витяй1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanЗдесь был?

http://startandroid.ru/ru/uroki/vse-uroki-spiskom/115-urok-56-spinner-vypadajuschij-spisok.html
http://startandroid.ru/ru/uroki/vse-uroki-spiskom/99-urok-47-obzor-adapterov.html
был, я же и использовал SimpleExpandableListAdapter, но это не спиннер, я неправильно выразился, это двухуровневый список
...
Рейтинг: 0 / 0
Плучить текстовое значение элемента в выпадающем списке
    #38693306
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Витяй1991
Код: java
1.
2.
public boolean onChildClick(ExpandableListView parent, View v,
					int parentId, int childId, long arg4) {


parentId, childId не пробовал анализировать?
...
Рейтинг: 0 / 0
Плучить текстовое значение элемента в выпадающем списке
    #38693323
Витяй1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanВитяй1991
Код: java
1.
2.
public boolean onChildClick(ExpandableListView parent, View v,
					int parentId, int childId, long arg4) {


parentId, childId не пробовал анализировать?
пробовал, parentId это id пункта, а childId id-шники подпунктов, но из них никак не извлечь текстовое значение ячейки
...
Рейтинг: 0 / 0
Плучить текстовое значение элемента в выпадающем списке
    #38693413
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Витяй1991пробовал, parentId это id пункта, а childId id-шники подпунктов, но из них никак не извлечь текстовое значение ячейки
Может стоит извлекать их из источников?
...
Рейтинг: 0 / 0
Плучить текстовое значение элемента в выпадающем списке
    #38693423
Витяй1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пытаюсь так сделать
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
elvMain.setOnChildClickListener(new OnChildClickListener(){

			@Override
			public boolean onChildClick(ExpandableListView parent, View v,
					int parentId, int childId, long arg4) {
				ArrayList<FieldValue> o = (ArrayList<FieldValue>)parent.getItemAtPosition(childId);
				Log.e("777777", o.get(0).getEvent());
				return false;
			}
			
		});



выдает ошибку:
ошибкаE/AndroidRuntime(378): FATAL EXCEPTION: main
E/AndroidRuntime(378): java.lang.ClassCastException: java.util.HashMap
E/AndroidRuntime(378): at com.projectandr.mapp.Events$1.onChildClick(Events.java:103)
E/AndroidRuntime(378): at android.widget.ExpandableListView.handleItemClick(ExpandableListView.java:588)
E/AndroidRuntime(378): at android.widget.ExpandableListView.performItemClick(ExpandableListView.java:527)
E/AndroidRuntime(378): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1812)
E/AndroidRuntime(378): at android.os.Handler.handleCallback(Handler.java:587)
E/AndroidRuntime(378): at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime(378): at android.os.Looper.loop(Looper.java:130)
E/AndroidRuntime(378): at android.app.ActivityThread.main(ActivityThread.java:3683)
E/AndroidRuntime(378): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(378): at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime(378): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
E/AndroidRuntime(378): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
E/AndroidRuntime(378): at dalvik.system.NativeStart.main(Native Method)
...
Рейтинг: 0 / 0
Плучить текстовое значение элемента в выпадающем списке
    #38693425
Витяй1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanВитяй1991пробовал, parentId это id пункта, а childId id-шники подпунктов, но из них никак не извлечь текстовое значение ячейки
Может стоит извлекать их из источников?
а это как?
...
Рейтинг: 0 / 0
Плучить текстовое значение элемента в выпадающем списке
    #38693470
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Витяй1991wadmanпропущено...

Может стоит извлекать их из источников?
а это как?
Отсюда
Витяй1991
Код: java
1.
2.
3.
	private ArrayList<Map<String, String>> groupData;
	private ArrayList<Map<String, String>> childDataItem;
	private ArrayList<ArrayList<Map<String, String>>> childData;
...
Рейтинг: 0 / 0
Плучить текстовое значение элемента в выпадающем списке
    #38693483
Витяй1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanВитяй1991пропущено...

а это как?
Отсюда
Витяй1991
Код: java
1.
2.
3.
	private ArrayList<Map<String, String>> groupData;
	private ArrayList<Map<String, String>> childDataItem;
	private ArrayList<ArrayList<Map<String, String>>> childData;


пробовал уже:
Код: java
1.
Map<String, ArrayList<FieldValue>> o = (Map<String, ArrayList<FieldValue>>)parent.getItemAtPosition(childId);


Код: java
1.
ArrayList<FieldValue> o = (ArrayList<FieldValue>)parent.getItemAtPosition(childId);


Код: java
1.
FieldValue o = (FieldValue)parent.getItemAtPosition(childId);


Везде ошибка java.lang.ClassCastException
...
Рейтинг: 0 / 0
Плучить текстовое значение элемента в выпадающем списке
    #38693521
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Витяй1991пробовал уже:
Я указывал на списки, которые уже объявлены и по идее при создании адаптера должны быть переданы в качестве источника данных.
...
Рейтинг: 0 / 0
Плучить текстовое значение элемента в выпадающем списке
    #38693531
Витяй1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanВитяй1991пробовал уже:
Я указывал на списки, которые уже объявлены и по идее при создании адаптера должны быть переданы в качестве источника данных.
ну да, но нужен ключ, чтобы искать по Map'у, его как раз и пытаюсь получить при нажатии на ячейку, а получаю только id нажатой ячейки
...
Рейтинг: 0 / 0
Плучить текстовое значение элемента в выпадающем списке
    #38693550
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Витяй1991ну да, но нужен ключ, чтобы искать по Map'у, его как раз и пытаюсь получить при нажатии на ячейку, а получаю только id нажатой ячейки
Какой ключ? Это ArrayList - для него нужен только id записи, чтобы её (map) получить.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Android [игнор отключен] [закрыт для гостей] / Плучить текстовое значение элемента в выпадающем списке
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]