【发布时间】: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