【问题标题】:when i Click an item on Expandable listview the move to the next activity当我单击可扩展列表视图上的一个项目时,移动到下一个活动
【发布时间】:2014-09-21 16:26:23
【问题描述】:

我想要发生的只是当我单击可展开列表视图中的一个项目时,它会显示一个新活动。 例如,我的可扩展列表视图中有一个姓名列表(paul、john、mark、james、luke),当我单击#james 时,新活动很好地打开包含有关#james 的信息。

/*********************************CategoryScreen.java*************/

package filipiknows.open;

import filipiknows.open.R;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ExpandableListView;
import android.widget.ExpandableListView.OnChildClickListener;
import android.widget.ExpandableListView.OnGroupClickListener;

public class CategoryScreen extends Activity {

    ELAdapter listAdapter;
    ExpandableListView expListView;
    List<String> listDataHeader;
    HashMap<String, List<String>> listDataChild;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.category);

        // get the listview
        expListView = (ExpandableListView) findViewById(R.id.lvExp);

        // preparing list data
        prepareListData();

        listAdapter = new ELAdapter(this, listDataHeader, listDataChild);

        // setting list adapter
        expListView.setAdapter(listAdapter);

        // Listview Group click listener
        expListView.setOnGroupClickListener(new OnGroupClickListener() {

            @Override
            public boolean onGroupClick(ExpandableListView parent, View v,
                    int groupPosition, long id) {
                // Toast.makeText(getApplicationContext(),
                // "Group Clicked " + listDataHeader.get(groupPosition),
                // Toast.LENGTH_SHORT).show();
                return false;
            }
        });


        // Listview on child click listener
        expListView.setOnChildClickListener(new OnChildClickListener() {

            @Override
            public boolean onChildClick(ExpandableListView parent, View v,
                    int groupPosition, int childPosition, long id) {
                // TODO Auto-generated method stub
                return false;
            }
        });
    }


    private void prepareListData() {
        listDataHeader = new ArrayList<String>();
        listDataChild = new HashMap<String, List<String>>();

        // Adding child data
        listDataHeader.add("Phillippines Heroes");
        listDataHeader.add("Presidents");
        listDataHeader.add("Culture and Tradition");
        listDataHeader.add("Tourist Spots");
        listDataHeader.add("Filipino Dishes");
        listDataHeader.add("Traditional Customes");
        listDataHeader.add("Traditional Games");

        // Adding child data
        List<String> PhillippinesHeroes = new ArrayList<String>();
        PhillippinesHeroes.add("Dr. Jose Rizal");
        PhillippinesHeroes.add("Andres Bonifacio");
        PhillippinesHeroes.add("General Gregorio del Pilar");
        PhillippinesHeroes.add("General Emilio Aguinaldo");
        PhillippinesHeroes.add("Apolinario Mabini");
        PhillippinesHeroes.add("Father Mariano Gomez");
        PhillippinesHeroes.add("Father Father Jose Burgos ");
        PhillippinesHeroes.add("Father Father Jacinto Zamora");
        PhillippinesHeroes.add("Trece Martirez");
        PhillippinesHeroes.add("Emilio Jacinto");
        PhillippinesHeroes.add("General Antonio Luna");
        PhillippinesHeroes.add("Melchora Aquino");
        PhillippinesHeroes.add("Graciano Lopez-Jaena");
        PhillippinesHeroes.add("Panday Pira");
        PhillippinesHeroes.add("Mariano Ponce");
        PhillippinesHeroes.add("Gregoria de Jesus");
        PhillippinesHeroes.add("Fernando Ma. Guerrero");
        PhillippinesHeroes.add("Felipe Agoncillo");
        PhillippinesHeroes.add("Juan Luna");
        PhillippinesHeroes.add("Rafael Palma");
        PhillippinesHeroes.add("Marcelo H. Del Pilar");
        PhillippinesHeroes.add("Pedro Paterno");
        PhillippinesHeroes.add("Leona Florentino");
        PhillippinesHeroes.add("Isabelo delos Reyes");
        PhillippinesHeroes.add("Artemio Ricarte");
        PhillippinesHeroes.add("Jose Palma");
        PhillippinesHeroes.add("Rajah Lakandola");
        PhillippinesHeroes.add("Rajah Soliman");
        PhillippinesHeroes.add("Leonor Rivera");
        PhillippinesHeroes.add("Marcela Mariño Agoncillo");
        PhillippinesHeroes.add("Galicano Apacible");
        PhillippinesHeroes.add("Jose Ma. Panganiban");
        PhillippinesHeroes.add("Diego Silang");
        PhillippinesHeroes.add("Maria Josefa Gabriela Silang");
        PhillippinesHeroes.add("Lapu-Lapu");
        PhillippinesHeroes.add("Francisco Baltazar");
        PhillippinesHeroes.add("Epifanio delos Santos");
        PhillippinesHeroes.add("Francisco Dagohoy");
        PhillippinesHeroes.add("Teresa Magbanua");
        PhillippinesHeroes.add("Trinidad Tecson");
        PhillippinesHeroes.add("Agueda Esteban");
        PhillippinesHeroes.add("Julian Felipe");
        PhillippinesHeroes.add("Marina Dizon");
        PhillippinesHeroes.add("General Francisco Makabulos");

        List<String> Presidents = new ArrayList<String>();
        Presidents.add("Emilio Aguinaldo");
        Presidents.add("Manuel L. Quezon");
        Presidents.add("José P. Laurel");
        Presidents.add("Sergio S. Osmeña");
        Presidents.add("Manuel A. Roxas");
        Presidents.add("Elpidio R. Quirino");
        Presidents.add("Ramón F. Magsaysay");
        Presidents.add("Carlos P. García");
        Presidents.add("Diosdado P. Macapagal");
        Presidents.add("Ferdinand E. Marcos");
        Presidents.add("Corazón C. Aquino");
        Presidents.add("Fidel V. Ramos");
        Presidents.add("Joseph Ejército Estrada");
        Presidents.add("Gloria Macapagal Arroyo");
        Presidents.add("Benigno S. Aquino III");

        List<String> CultureAndTradition = new ArrayList<String>();
        CultureAndTradition.add("");
        CultureAndTradition.add("");
        CultureAndTradition.add("");
        CultureAndTradition.add("");
        CultureAndTradition.add("");
        CultureAndTradition.add("");

        List<String> TouristSpots = new ArrayList<String>();
        TouristSpots.add("Manila");
        TouristSpots.add("Bohol");
        TouristSpots.add("Boracay");
        TouristSpots.add("baguio");
        TouristSpots.add("Cagayan");
        TouristSpots.add("Cagayan De Oro");
        TouristSpots.add("Camiguin");
        TouristSpots.add("Cebu");
        TouristSpots.add("Davao City");
        TouristSpots.add("Ilocos Norte");
        TouristSpots.add("Negros Oriental");
        TouristSpots.add("Puerto Prencesa");
        TouristSpots.add("Zambales");

        List<String> FilipinoDishes = new ArrayList<String>();
        FilipinoDishes.add("Adobo");
        FilipinoDishes.add("Balut");
        FilipinoDishes.add("Lechon");
        FilipinoDishes.add("Sisig");
        FilipinoDishes.add("Crispy Pata");
        FilipinoDishes.add("Chicken Inasal");
        FilipinoDishes.add("Pansit Palabok");
        FilipinoDishes.add("Bulalo");
        FilipinoDishes.add("Arroz Caldo");
        FilipinoDishes.add("Kare-Kare");
        FilipinoDishes.add("Sinigang");
        FilipinoDishes.add("Dinuguan at puto");
        FilipinoDishes.add("Laing");
        FilipinoDishes.add("Pinakbet");
        FilipinoDishes.add("Bicol Express");
        FilipinoDishes.add("Tinola");
        FilipinoDishes.add("Halo-Halo");
        FilipinoDishes.add("Taho");
        FilipinoDishes.add("Turon");
        FilipinoDishes.add("Longaniza");
        FilipinoDishes.add("Lumpiang Sariwa");

        List<String> TraditionalCustomes = new ArrayList<String>();
        TraditionalCustomes.add("Barong Tagalog");
        TraditionalCustomes.add("Mestiza");
        TraditionalCustomes.add("Maria Clara");
        TraditionalCustomes.add("Kimona");
        TraditionalCustomes.add("Igorot");
        TraditionalCustomes.add("Muslim Attire");
        TraditionalCustomes.add("Malong");
        TraditionalCustomes.add("B’LAAN");
        TraditionalCustomes.add("Bagobo")
        TraditionalCustomes.add("T’BOLI");
        TraditionalCustomes.add("Mandaya");
        TraditionalCustomes.add("Maranaw");
        TraditionalCustomes.add("Yakan");
        TraditionalCustomes.add("Ifugao");
        TraditionalCustomes.add("Kalinga");
        TraditionalCustomes.add("GA’DANG");
        TraditionalCustomes.add("Bontoc");
        TraditionalCustomes.add("Samal");
        TraditionalCustomes.add("Ibaloi");
        TraditionalCustomes.add("Aetas");
        TraditionalCustomes.add("Pulangiyen");
        TraditionalCustomes.add("Matigsalug");

        List<String> TraditionalGames = new ArrayList<String>();
        TraditionalGames.add("Tumbang Preso");
        TraditionalGames.add("Luksong-Baka");
        TraditionalGames.add("Luksong-tinik");
        TraditionalGames.add("Piko");
        TraditionalGames.add("Agawan Base");
        TraditionalGames.add("Bahay-Bahayan");
        TraditionalGames.add("Chinese Garter");
        TraditionalGames.add("Holen");
        TraditionalGames.add("Jack 'n' Poy");
        TraditionalGames.add("Langit-Lupa");
        TraditionalGames.add("Pitik-Bulag");
        TraditionalGames.add("Sawsaw-Suka");
        TraditionalGames.add("Sipa");
        TraditionalGames.add("Taguan");
        TraditionalGames.add("Takip-Silim");
        TraditionalGames.add("Ten-Twenty");
        TraditionalGames.add("Tinikling");
        TraditionalGames.add("Ubusan Lahi");
        TraditionalGames.add("Teks");

        // Header at Child data
        listDataChild.put(listDataHeader.get(0), PhillippinesHeroes); 
        listDataChild.put(listDataHeader.get(1), Presidents);
        listDataChild.put(listDataHeader.get(2), CultureAndTradition);
        listDataChild.put(listDataHeader.get(3), TouristSpots);
        listDataChild.put(listDataHeader.get(4), FilipinoDishes);
        listDataChild.put(listDataHeader.get(5), TraditionalCustomes);
        listDataChild.put(listDataHeader.get(6), TraditionalGames);
    }
}

/**********扩展列表视图适配器(ELAdapter.java)****************************** ******************/

package filipiknows.open;

import filipiknows.open.R;

import java.util.HashMap;
import java.util.List;

import android.content.Context;
import android.graphics.Typeface;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.TextView;

public class ELAdapter extends BaseExpandableListAdapter {

    private Context _context;
    private List<String> _listDataHeader; // header titles
    // child data in format of header title, child title
    private HashMap<String, List<String>> _listDataChild;

    public ELAdapter(Context context, List<String> listDataHeader,
            HashMap<String, List<String>> listChildData) {
        this._context = context;
        this._listDataHeader = listDataHeader;
        this._listDataChild = listChildData;
    }

    @Override
    public Object getChild(int groupPosition, int childPosititon) {
        return this._listDataChild.get(this._listDataHeader.get(groupPosition))
                .get(childPosititon);
    }

    @Override
    public long getChildId(int groupPosition, int childPosition) {
        return childPosition;
    }

    @Override
    public View getChildView(int groupPosition, final int childPosition,
            boolean isLastChild, View convertView, ViewGroup parent) {

        final String childText = (String) getChild(groupPosition, childPosition);

        if (convertView == null) {
            LayoutInflater infalInflater = (LayoutInflater) this._context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = infalInflater.inflate(R.layout.list_item, null);
        }

        TextView txtListChild = (TextView) convertView
                .findViewById(R.id.lblListItem);

        txtListChild.setText(childText);
        return convertView;
    }

    @Override
    public int getChildrenCount(int groupPosition) {
        return this._listDataChild.get(this._listDataHeader.get(groupPosition))
                .size();
    }

    @Override
    public Object getGroup(int groupPosition) {
        return this._listDataHeader.get(groupPosition);
    }

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

    @Override
    public long getGroupId(int groupPosition) {
        return groupPosition;
    }

    @Override
    public View getGroupView(int groupPosition, boolean isExpanded,
            View convertView, ViewGroup parent) {
        String headerTitle = (String) getGroup(groupPosition);
        if (convertView == null) {
            LayoutInflater infalInflater = (LayoutInflater) this._context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = infalInflater.inflate(R.layout.list_group, null);
        }

        TextView lblListHeader = (TextView) convertView
                .findViewById(R.id.lblListHeader);
        lblListHeader.setTypeface(null, Typeface.BOLD);
        lblListHeader.setText(headerTitle);

        return convertView;
    }

    @Override
    public boolean hasStableIds() {
        return false;
    }

    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        return true;
    }

}

【问题讨论】:

  • 当您点击该项目时会发生什么?
  • 你已经附加了一个childClickListener,但你没有用任何有用的东西填充它。您将必须在点击监听器中启动活动,并传递所有必要的数据以显示您要显示的完整信息,或者提供足够的信息以从 db/whatever 中提取数据
  • Daniel 说的对,为什么不使用 Fragment 来加载信息呢?
  • @joao2fast4u 当我单击项目时,他们会移动到包含有关此*项目信息的新活动..
  • @IslandWave 是的,我想使用 Fragment,但我不知道如何将 Fragment 插入可扩展列表中......对不起,我只是 android 编程的新手跨度>

标签: android android-fragments expandablelistview


【解决方案1】:

由于我不完全确定您要做什么,这就是 id 启动带有 textview 的活动的方式,它显示点击的人员文本。

ClickListener的实现

@Override
public boolean onChildClick(ExpandableListView parent, View v,int groupPosition, int childPosition, long id) {
    // TODO Auto-generated method stub
    Intent i = new Intent(this, DetailsActivity.class);
    i.putExtra("Name", listDataChild.get(this.listDataHeader.get(groupPosition)).get(childPosititon));
    startActivity(i);
    return true;
}

显示文本的简单活动

public class DetailsActivity extends Activity {

    TextView tv;

    public View onCreate(SavedInstanceState bundle) {
        tv = new TextView(this);

        return tv;
    }

    public void onResume() {
        super.onResume();

        tv.setText(getIntent().getStringExtra("Name", "SomeDefaultValue"));
    }

}

这应该显示如何做到这一点,如果你不能适应你的需要,你可能想看看一个教程:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-14
    • 1970-01-01
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-10
    相关资源
    最近更新 更多