Android Epandablelistview po wybraniu child, podmenu jak podporządkowac do innych komunikatów

0

Dzień dobry
Posiadam przykładowy kod, który rozwija menu.
Wszystko pięknie chodzi, ale mam mały problem otóź,
nie wiem jak podpodrządkować pod menu do różnych okien i komunikatów.
po każdym naciśnieciu opcji pod menu np;

		 
		child.add("Apple");
		child.add("Mango");
		child.add("Banana");
		child.add("Orange");

program wywołuje

			@Override
			public void onClick(View view) {
				Toast.makeText(activity, wybrano" + child.get(childPosition), Toast.LENGTH_SHORT).show();
			}
		});

Po naciśnięciu np: Banana program ma wyświetlić napis "zielony baban do jedzenia"
Po naciśnięciu np: Orange program ma wyświetlić napis "napój 1,5 litrowy"
itd.
tylko nie wiem czy layout mam wpisać tyle button-ów ile jest pod menu i zastosować

public void onClick(View view)
{
}

dla każdego buton-u

Czy użyć innej komendy.

Z tym mam problem proszę o pomoc.
Proszę o pomoc jak podporządkować opcje do podmenu

podaje kod poniżej


import java.util.ArrayList;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ExpandableListView;
import android.widget.ImageView;
import android.app.ExpandableListActivity;
import android.content.Context;

public class M001 extends ExpandableListActivity {

	// Create ArrayList to hold parent Items and Child Items
	private ArrayList<String> parentItems = new ArrayList<String>();
	private ArrayList<Object> childItems = new ArrayList<Object>();

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		// Create Expandable List and set it's properties
		ExpandableListView expandableList = getExpandableListView();
		expandableList.setDividerHeight(2);
		expandableList.setGroupIndicator(null);
		expandableList.setClickable(true);

		// Set the Items of Parent
		setGroupParents();
		// Set The Child Data
		setChildData();

		// Create the Adapter
		MyExpandableAdapter adapter = new MyExpandableAdapter(parentItems,
				childItems);

		adapter.setInflater(
				(LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE),
				this);

		// Set the Adapter to expandableList
		expandableList.setAdapter(adapter);
		expandableList.setOnChildClickListener(this);

	}

	// method to add parent Items
	public void setGroupParents() {
		parentItems.add("Fruits");
		parentItems.add("Flowers");
		parentItems.add("Animals");
		parentItems.add("Birds");
	}

	// method to set child data of each parent
	public void setChildData() {

		// Add Child Items for Fruits
		ArrayList<String> child = new ArrayList<String>();
		child.add("Apple");
		child.add("Mango");
		child.add("Banana");
		child.add("Orange");

		childItems.add(child);

		// Add Child Items for Flowers
		child = new ArrayList<String>();
		child.add("Rose");
		child.add("Lotus");
		child.add("Jasmine");
		child.add("Lily");

		childItems.add(child);

		// Add Child Items for Animals
		child = new ArrayList<String>();
		child.add("Lion");
		child.add("Tiger");
		child.add("Horse");
		child.add("Котик");

		childItems.add(child);

		// Add Child Items for Birds
		child = new ArrayList<String>();
		child.add("Parrot");
		child.add("Sparrow");
		child.add("Peacock");
		child.add("Pigeon");

		childItems.add(child);
	}
}

import java.util.ArrayList;

import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.CheckedTextView;
import android.widget.TextView;
import android.widget.Toast;

public class MyExpandableAdapter extends BaseExpandableListAdapter {

	private Activity activity;
	private ArrayList<Object> childtems;
	private LayoutInflater inflater;
	private ArrayList<String> parentItems, child;

	// constructor
	public MyExpandableAdapter(ArrayList<String> parents,
			ArrayList<Object> childern) {
		this.parentItems = parents;
		this.childtems = childern;
	}

	public void setInflater(LayoutInflater inflater, Activity activity) {
		this.inflater = inflater;
		this.activity = activity;
	}

	@Override
	public int getGroupCount() {
		return parentItems.size();
	}

	@Override
	public int getChildrenCount(int groupPosition) {
		// TODO Auto-generated method stub
		 return ((ArrayList<String>) childtems.get(groupPosition)).size();
	}

	@Override
	public Object getGroup(int groupPosition) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public Object getChild(int groupPosition, int childPosition) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public long getGroupId(int groupPosition) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public long getChildId(int groupPosition, int childPosition) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public boolean hasStableIds() {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public View getGroupView(int groupPosition, boolean isExpanded,
			View convertView, ViewGroup parent) {
		if (convertView == null) {
			convertView = inflater.inflate(R.layout.exp_list_group_item, null);
		}

		((CheckedTextView) convertView).setText(parentItems.get(groupPosition));
		((CheckedTextView) convertView).setChecked(isExpanded);

		return convertView;
	}

	@Override
	public View getChildView(int groupPosition, final int childPosition,
			boolean isLastChild, View convertView, ViewGroup parent) {
		// TODO Auto-generated method stub
		child = (ArrayList<String>) childtems.get(groupPosition);

		TextView textView = null;

		if (convertView == null) {
			convertView = inflater.inflate(R.layout.exp_list_child_item, null);
		}

		// get the textView reference and set the value
		textView = (TextView) convertView.findViewById(R.id.textViewChild);
		textView.setText(child.get(childPosition));

		// set the ClickListener to handle the click event on child item
		convertView.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View view) {
				Toast.makeText(activity, child.get(childPosition),
						Toast.LENGTH_SHORT).show();
			}
		});
		return convertView;
	}

	@Override
	public boolean isChildSelectable(int groupPosition, int childPosition) {
		// TODO Auto-generated method stub
		return false;
	}
}
exp_list_child_item.xml
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="40dp"
    android:background="#99D6D6"
    android:clickable="true"
    android:orientation="vertical"
    android:paddingLeft="40dp" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:gravity="center_vertical" >

        <TextView
            android:id="@+id/textViewChild"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="4dp"
            android:textColor="#1919A3"
            android:textSize="16sp"
            android:textStyle="bold" />
    </LinearLayout>

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@android:color/white" />

</LinearLayout>
exp_list_group_item.xml
<?xml version="1.0" encoding="utf-8"?> 
<CheckedTextView
        xmlns:android="http://schemas.android.com/apk/res/android" 
        android:id="@+id/textViewGroupName"
        android:layout_width="wrap_content"
        android:layout_height="60dp"
        android:layout_marginLeft="5dp"
        android:gravity="center_vertical" 
        android:textSize="18dp"
        android:textColor="#FFFFFF"
        android:padding="10dp" 
        android:background="#009999"
        android:textStyle="bold" /> 

dziękuje bardzo za odpowiedz

0

Ja bym na Twoim miejscy zrobił to tak:
Każdy z Elementów na liście jest klasą która ma stringa+ implementuje jakiś stworzony przez Ciebie interfejs "zrób na kliknięcie"

Po clicku wywolujesz tylko metodę zrobNaKlikniecie i wsio :)
Czyli tworzysz interfejs

public interface DoOnClick{
public String doOnClick();
}

Klase która to będzie implementowala

public abstract class MyClass implements DoOnClick{
protected String text myText;

public MyClass(String text){
myText=text;
}

public String getText() {return myText};
}

dla kazdej klasy ktora dodajesz (czy tam tekstu) implementujesz sobie doOnClick żeby Ci wypisywal to co potrzebujesz.

Tworzysz Adapter tak jak stworzyleś tylko nie Base a jakis taki ktory przyjmyje liste obiektów i w onClicku wywolujesz metode doOnClick obiektu

tyle :)

0

sprawdzę to dzięki

1 użytkowników online, w tym zalogowanych: 0, gości: 1