列出适配器,其值不同于显示为文本的值

时间:2015-01-25 19:14:09

标签: android android-activity android-adapter

我开始学习安卓程序设计而且我已经卡住了,我不确定如何使用listadapter,(应用程序应该是私人教练,你可以选择3项活动)喜欢类型的训练,家庭或健身房和强度,根据你的选择,它应该显示练习)​​我已经设置了一个列表,点击这两个选项之一,创建下一个活动的路径但是,在代码中看到的意图,活动名称与列表中显示为文本的名称不同。我觉得我的逻辑在这里失败了,但除了elses之外,我找不到办法做到这一点。 (也许通过按钮或某种类型和onclicklisteners的任何视图来执行此操作会更容易)

第二件事,如果在java中以这种方式编程,我可以移动列表的位置和列表中的文本(例如中间)吗?就像在带有填充或其他东西的xml中一样?感谢

public class WorkoutPlace extends ListActivity {

String classes[] = { "WORKOUTHOME" , "WORKOUTGYM" };
// these should be   "HOME Workout", "GYM Workout"

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setListAdapter(new ArrayAdapter<String>(WorkoutPlace.this,
            android.R.layout.simple_list_item_1, classes));
}

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    // TODO Auto-generated method stub
    super.onListItemClick(l, v, position, id);
    String Home_Gym = classes[position];
    try{
    Class ourClass = Class.forName("totaltrainer.com." + Home_Gym);
    Intent ourIntent = new Intent(WorkoutPlace.this, ourClass);
    startActivity(ourIntent);
    }catch(ClassNotFoundException e){
        e.printStackTrace();
    }
}
}

1 个答案:

答案 0 :(得分:0)

定义一个包含实际类的并行数组,如下所示:

String classes[] = { "HOME Workout" , "GYM Workout" };
Class actualClasses[] = { totaltrainer.com.WORKOUTHOME.class,
                          totaltrainer.com.WORKOUTGYM.class };

onListItemClick()执行:

Intent ourIntent = new Intent(WorkoutPlace.this, actualClasses[position]);
startActivity(ourIntent);

注意:您确实应该更改类的名称,以便它们不是全部大写。使用WorkoutGym代替WORKOUTGYM