所以这是我的代码.. 我有很多 Activity 要切换,这段代码似乎工作得很好。但我想知道是否有另一种方法比“SWITCH CASE”方法更简单且易于实现。
在此输入验证码
package com.prashant.dfs;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.ExpandableListView;
import android.widget.ExpandableListView.OnChildClickListener;
public class Chapter_1_full extends Activity {
ExpandableListAdapter listAdapter;
ExpandableListView expListView;
List<String> ListDataHeader;
HashMap<String,List<String>> listDataChild;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chapter_1_full);
//get the listView(expand)
expListView = (ExpandableListView) findViewById(R.id.ch1_expand);
//prepareDataList
prepareListData();
listAdapter=new ExpandableListAdapter(this, ListDataHeader, listDataChild);
expListView.setAdapter(listAdapter);
}
private void prepareListData() {
ListDataHeader = new ArrayList<String>();
listDataChild=new HashMap<String, List<String>>();
//Adding child Data
ListDataHeader.add("1.1 Introductin to Algorithms");
ListDataHeader.add("1.2 Data Structures");
ListDataHeader.add("1.3 ADT");
List<String> Intro = new ArrayList<String>();
Intro.add("Algoithem Design ");
Intro.add("Flowcharting");
Intro.add("Pseudo-Language");
List<String> dataStructure = new ArrayList<String>();
dataStructure.add("Type of Data Structure");
dataStructure.add("Primitive and Non-Primitive");
dataStructure.add("Linear and Non-Linear");
dataStructure.add("Static and Dynamic");
List<String> ADT = new ArrayList<String>();
ADT.add("Datat Object");
listDataChild.put(ListDataHeader.get(0),Intro);
listDataChild.put(ListDataHeader.get(1),dataStructure);
listDataChild.put(ListDataHeader.get(2),ADT);
expListView.setOnChildClickListener(new OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
final Object childObj=parent.getExpandableListAdapter().getChild(groupPosition, childPosition);
if(childObj!=null)
{
switch (groupPosition)
{
case 0:
{
switch (childPosition)
{
case 0:
{
startActivity(new Intent(Chapter_1_full.this,TestActivity.class));
break;
}
case 1:
{
startActivity(new Intent(Chapter_1_full.this,TestActivity2.class));
break;
}
case 2:
{
startActivity(new Intent(Chapter_1_full.this,TestActivity3.class));
break;
}
}
break;
}
case 1:
startActivity(new Intent(Chapter_1_full.this,TestActivity4.class));
}
}
return true;
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.chapter_1_full, menu);
return true;
}
最佳答案
您可以创建一个自定义类来存储您的项目标签和负责管理该选择的 Activity ,例如 toString
允许您在处理字符串时遵循相同的行为。
public class EntryList{
public String label;
public Class<?> activity;
public EntryList( String label,Class<?> activity ){
this.label =label;
this.activity = activity;
}
@Override
public String toString() {
return label;
}
}
然后你可以用这个 listDataChild=new HashMap<String, List<EntryList>>();
替换你的 map , 并将子项添加为
List< EntryList > Intro = new ArrayList< EntryList >();
Intro.add( new EntryList("Algoithem Design ", youractivity.class) );
Intro.add( new EntryList("Flowcharting", youractivity.class);
Intro.add( new EntryList("Pseudo-Language", youractivity.class));
最后进入 setOnChildClickListener
你只需要的方法是
EntryList entry = listDataChild.get( groupPosition ).get( childPosition );
startActivity( new Intent( context, entry.activity ) );
关于java - 调用 Activity 的另一种方法。?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19324752/