Гость
Форумы / Android [игнор отключен] [закрыт для гостей] / Плучить текстовое значение элемента в выпадающем списке / 13 сообщений из 13, страница 1 из 1
09.07.2014, 21:00
    #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
10.07.2014, 09:25
    #38692690
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плучить текстовое значение элемента в выпадающем списке
...
Рейтинг: 0 / 0
10.07.2014, 14:35
    #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
10.07.2014, 15:04
    #38693306
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плучить текстовое значение элемента в выпадающем списке
Витяй1991
Код: java
1.
2.
public boolean onChildClick(ExpandableListView parent, View v,
					int parentId, int childId, long arg4) {


parentId, childId не пробовал анализировать?
...
Рейтинг: 0 / 0
10.07.2014, 15:10
    #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
10.07.2014, 15:41
    #38693413
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плучить текстовое значение элемента в выпадающем списке
Витяй1991пробовал, parentId это id пункта, а childId id-шники подпунктов, но из них никак не извлечь текстовое значение ячейки
Может стоит извлекать их из источников?
...
Рейтинг: 0 / 0
10.07.2014, 15:44
    #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
10.07.2014, 15:44
    #38693425
Витяй1991
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плучить текстовое значение элемента в выпадающем списке
wadmanВитяй1991пробовал, parentId это id пункта, а childId id-шники подпунктов, но из них никак не извлечь текстовое значение ячейки
Может стоит извлекать их из источников?
а это как?
...
Рейтинг: 0 / 0
10.07.2014, 16:01
    #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
10.07.2014, 16:06
    #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
10.07.2014, 16:23
    #38693521
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плучить текстовое значение элемента в выпадающем списке
Витяй1991пробовал уже:
Я указывал на списки, которые уже объявлены и по идее при создании адаптера должны быть переданы в качестве источника данных.
...
Рейтинг: 0 / 0
10.07.2014, 16:28
    #38693531
Витяй1991
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плучить текстовое значение элемента в выпадающем списке
wadmanВитяй1991пробовал уже:
Я указывал на списки, которые уже объявлены и по идее при создании адаптера должны быть переданы в качестве источника данных.
ну да, но нужен ключ, чтобы искать по Map'у, его как раз и пытаюсь получить при нажатии на ячейку, а получаю только id нажатой ячейки
...
Рейтинг: 0 / 0
10.07.2014, 16:37
    #38693550
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плучить текстовое значение элемента в выпадающем списке
Витяй1991ну да, но нужен ключ, чтобы искать по Map'у, его как раз и пытаюсь получить при нажатии на ячейку, а получаю только id нажатой ячейки
Какой ключ? Это ArrayList - для него нужен только id записи, чтобы её (map) получить.
...
Рейтинг: 0 / 0
Форумы / Android [игнор отключен] [закрыт для гостей] / Плучить текстовое значение элемента в выпадающем списке / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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