Гость
Форумы / Android [игнор отключен] [закрыт для гостей] / ListView с Drop down меню / 13 сообщений из 13, страница 1 из 1
07.02.2014, 17:48
    #38553909
Витяй1991
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListView с Drop down меню
Нужно приделать к ListView выпадающее меню к каждому пункту, типа спиннера, но маленькое, нигде не могу найти как это сделать. Может, кто знает где можно найти хороший пример, буду благодарен
...
Рейтинг: 0 / 0
07.02.2014, 18:18
    #38553959
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListView с Drop down меню
...
Рейтинг: 0 / 0
07.02.2014, 18:29
    #38553975
Витяй1991
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListView с Drop down меню
wadman, нее, типа такого

Нажимаешь на картинку в листе и "вываливается" меню. Уже разобрался, как сделать PopupWindow, но как совместить его с ViewList? В адаптере прописывать всю логику и т.д.? Не совсем понятно
...
Рейтинг: 0 / 0
07.02.2014, 18:38
    #38553984
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListView с Drop down меню
Витяй1991В адаптере прописывать всю логику и т.д.?
Скорее всего
...
Рейтинг: 0 / 0
07.02.2014, 19:40
    #38554049
Витяй1991
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListView с Drop down меню
Сделал так:

Код: 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.
public class MyAdapter extends ArrayAdapter<CurrentModel> {
	private Context context;
	private CurrentListModel model;
	String[] popUpContents = { "Model1", "Model2" };
	PopupWindow menuList;
	ImageView arrow;

	public MyAdapter(Context paramContext, int paramInt,
			CurrentListModel model) {
		super(paramContext, paramInt, model.getDevices());
		this.model = model;
		this.context = paramContext;
	}

	public View getView(int paramInt, View paramView, ViewGroup paramViewGroup) {
		
		menuList = ppWindow();
		View localView = paramView;
		CurrentModel localModel = (CurrentModel) this.model.getDevices().get(paramInt);
		if (localModel != null) {
			TextView localTextView2 = (TextView) localView
					.findViewById(R.id.ui_wdl_device);
			if (localTextView2 != null) {
				String toSet = "Name: " + localModel.getLcTitle();
				localTextView2.setText(toSet);
			}
		}
		
		arrow = (ImageView)localView.findViewById(R.id.buttonShowDropDown);
		arrow.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View v) {
				switch (v.getId()) {
				case R.id.buttonShowDropDown:
					menuList.showAsDropDown(v, -5, 0);
					break;
				}
			}
		});
		
		return localView;
	}
	
	
	public PopupWindow ppWindow() {

		MainActivity dla = new MainActivity();
		PopupWindow popupWindow = new PopupWindow(context);
		ListView list = new ListView(context);
		list.setAdapter(dla.ppWindowAdapter(popUpContents));
		list.setOnItemClickListener(new OnItemClickListener(){
			@Override
			public void onItemClick(AdapterView<?> arg0, View v, int arg2, long arg3) {
				Context mContext = v.getContext();
				MainActivity mainActivity = ((MainActivity) mContext);
				menuList.dismiss();
			}
		});

		popupWindow.setFocusable(true);
		popupWindow.setWidth(450);
		popupWindow.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
		popupWindow.setContentView(list);

		return popupWindow;
	}
}



В MyActivity содержится метод ppWindowAdapter
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
public ArrayAdapter<String> ppWindowAdapter(String array[]) {

		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
				android.R.layout.simple_list_item_1, array) {

			@Override
			public View getView(int position, View convertView, ViewGroup parent) {

				String item = getItem(position);

				TextView listItem = new TextView(DeviceListActivity.this);

				listItem.setText(item);
				listItem.setTextSize(22);
				listItem.setPadding(10, 10, 10, 10);
				listItem.setTextColor(Color.WHITE);

				return listItem;
			}
		};

		return adapter;
	}



Выдает ошибку:
error02-07 19:15:54.735: E/AndroidRuntime(6043): FATAL EXCEPTION: main
02-07 19:15:54.735: E/AndroidRuntime(6043): java.lang.IllegalStateException: System services not available to Activities before onCreate()
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.app.Activity.getSystemService(Activity.java:4603)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.widget.ArrayAdapter.init(ArrayAdapter.java:310)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.widget.ArrayAdapter.<init>(ArrayAdapter.java:128)
02-07 19:15:54.735: E/AndroidRuntime(6043): at com.my.project.MyActivity$2.<init>(MyActivity.java:224)
02-07 19:15:54.735: E/AndroidRuntime(6043): at com.my.project.MyActivity.ppWindowAdapter(MyActivity.java:224)
02-07 19:15:54.735: E/AndroidRuntime(6043): at com.my.project.pjadapters.MyAdapter.ppWindow(MyAdapter.java:85)
02-07 19:15:54.735: E/AndroidRuntime(6043): at com.my.project.pjadapters.MyAdapter.getView(MyAdapter.java:38)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.widget.AbsListView.obtainView(AbsListView.java:2461)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.widget.ListView.makeAndAddView(ListView.java:1775)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.widget.ListView.fillDown(ListView.java:678)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.widget.ListView.fillFromTop(ListView.java:739)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.widget.ListView.layoutChildren(ListView.java:1628)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.widget.AbsListView.onLayout(AbsListView.java:2296)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.view.View.layout(View.java:14055)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.view.ViewGroup.layout(ViewGroup.java:4604)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1655)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1513)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.widget.LinearLayout.onLayout(LinearLayout.java:1426)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.view.View.layout(View.java:14055)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.view.ViewGroup.layout(ViewGroup.java:4604)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.view.View.layout(View.java:14055)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.view.ViewGroup.layout(ViewGroup.java:4604)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1655)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1513)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.widget.LinearLayout.onLayout(LinearLayout.java:1426)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.view.View.layout(View.java:14055)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.view.ViewGroup.layout(ViewGroup.java:4604)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.view.View.layout(View.java:14055)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.view.ViewGroup.layout(ViewGroup.java:4604)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1992)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1813)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1112)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4472)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.view.Choreographer.doCallbacks(Choreographer.java:555)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.view.Choreographer.doFrame(Choreographer.java:525)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.os.Handler.handleCallback(Handler.java:615)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.os.Handler.dispatchMessage(Handler.java:92)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.os.Looper.loop(Looper.java:137)
02-07 19:15:54.735: E/AndroidRuntime(6043): at android.app.ActivityThread.main(ActivityThread.java:4898)
02-07 19:15:54.735: E/AndroidRuntime(6043): at java.lang.reflect.Method.invokeNative(Native Method)
02-07 19:15:54.735: E/AndroidRuntime(6043): at java.lang.reflect.Method.invoke(Method.java:511)
02-07 19:15:54.735: E/AndroidRuntime(6043): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
02-07 19:15:54.735: E/AndroidRuntime(6043): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
02-07 19:15:54.735: E/AndroidRuntime(6043): at dalvik.system.NativeStart.main(Native Method)
...
Рейтинг: 0 / 0
07.02.2014, 19:40
    #38554050
Витяй1991
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListView с Drop down меню
выпадающее меню пытаюсь сделать по нажатию на ImageView arrow
...
Рейтинг: 0 / 0
07.02.2014, 19:48
    #38554061
Витяй1991
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListView с Drop down меню
Перенес метод public PopupWindow ppWindow() из активити в адаптер и всё заработало, урааа)))
...
Рейтинг: 0 / 0
07.02.2014, 19:59
    #38554074
Витяй1991
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListView с Drop down меню
а как теперь получить пункт списка, на котором они расположены?(
...
Рейтинг: 0 / 0
07.02.2014, 20:14
    #38554083
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListView с Drop down меню
http://ot-sims.googlecode.com/svn/trunk/UI-multimedia/src/fr/insa/lyon/ot/sims/multimedia/activity/FileBrowserActivity.java ?

Не весь код приведен, потому приходится гадать. setOnItemClickListener?
...
Рейтинг: 0 / 0
07.02.2014, 21:14
    #38554114
Витяй1991
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListView с Drop down меню
wadman http://ot-sims.googlecode.com/svn/trunk/UI-multimedia/src/fr/insa/lyon/ot/sims/multimedia/activity/FileBrowserActivity.java ?

Не весь код приведен, потому приходится гадать. setOnItemClickListener?
Так он возвращает пункт этого приделанного списка (PopupWindow), а надо пункт ListView. Сейчас ещё что-то про View.getTag(), View.setTag() почитал, но тоже не то
...
Рейтинг: 0 / 0
08.02.2014, 14:39
    #38554391
Джибс
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListView с Drop down меню
так тебе же
индекс элемента возвращается.
...
Рейтинг: 0 / 0
08.02.2014, 20:23
    #38554591
chpasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListView с Drop down меню
в ListView можно использовать любой layout в качестве элемента, в том числе и спиннеры. на кой ляд тут пляски с PopupWindow?
...
Рейтинг: 0 / 0
09.02.2014, 00:36
    #38554752
Джибс
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListView с Drop down меню
chpashaв ListView можно использовать любой layout в качестве элемента, в том числе и спиннеры. на кой ляд тут пляски с PopupWindow?

и в правду.

учитывая что свой адаптер юзает.
...
Рейтинг: 0 / 0
Форумы / Android [игнор отключен] [закрыт для гостей] / ListView с Drop down меню / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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