我实现了一个基本的navigationDrawer
,带有一个字符串数组。我希望用户点击列表中的某些内容并转到相应的Activity
。但是,我在这里完全不知所措。我在这里已经阅读了不少答案,但目前还不清楚如何做到这一点。
我找到了一个结合答案的所有项目的有用方法。然而它仍然返回我的MainActivity
而不是其他活动。
addDrawerItems()
功能:
public void addDrawerItems() {
mDrawerList = (ListView) findViewById(R.id.navList);
String[] osArray = {"How-to", "Milestones", "Bridge & Beams", "Settings"};
mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, osArray);
mDrawerList.setAdapter(mAdapter);
mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
switch (position) {
case 0: //First item
Intent intent1 = new Intent(MainActivity.this, SettingsActivity.class);
startActivity(intent1);
break;
case 1: //Second item
Intent intent2 = new Intent(MainActivity.this, Bridge_BeamsActivity.class);
startActivity(intent2);
break;
case 2: //Third item
Intent intent3 = new Intent(MainActivity.this, MileStonesActivity.class);
startActivity(intent3);
break;
case 3: //Fourth item
Intent intent4 = new Intent(MainActivity.this, HowToActivity.class);
startActivity(intent4);
break;
default:
}
}
});
}
现在我的onCreate
我称之为addDrawerItems()
:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Check if there is any saved data
checkFirstRun();
//Apply saved data
savedData();
//Apply drawer
addDrawerItems();
}
任何帮助将非常感激!如果有任何不清楚的代码或我的解释,请不要犹豫与我们联系。
如果您想查看已有的内容,请在Play商店中查看我的测试版应用:https://play.google.com/store/apps/details?id=jhpcoenen.connectlife.beams
设置适配器后添加以下代码:
mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
pos =position;
Intent intent = new Intent(MainActivity.this, CorrespondingActivity.class);
startActivity(intent);
switch (position) {
default:
}
}
});
意图功能将进行所需的活动。
编辑
v.getId()将获取视图的id,即在R类中注册的id。由于您的数组只包含字符串,因此将字符串与视图ID绑定的唯一方法是手动检查它。构建侦听器并记录您的id以识别它
mDrawerList.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Log.d("your App","id clicked "+v.getId());
//this view is the item clicked by the user
Intent i = new Intent(getApplicationContext(),DestinyActivity.class)
i.putExtra("optionSelected",v.getId());
startActivity(i);
}
});
你会得到一个像234252341这样的id,并为列表中的每个项目提供一个不同的id,你可以将它与字符串相关联
原版的
您必须向ListView添加一个单击侦听器,并根据单击的视图对其执行操作。像这样的东西
mDrawerList.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
//this view is the item clicked by the user
Intent i = new Intent(getApplicationContext(),DestinyActivity.class)
i.putExtra("optionSelected",v.getId())
startActivity(i)
}
})
在DestinyActivity中,您必须使用Intent.getExtras获取额外内容并执行您需要的任何操作。 PD:代码是手写的,请使用IDE进行检查