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

Odpowiedz Nowy wątek
2015-01-11 22:09
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

Pozostało 580 znaków

2015-01-11 22:54
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 :)

Pozostało 580 znaków

2015-01-11 23:44
0

sprawdzę to dzięki

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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