我有一個字符串數組與9個不同的字符串,並創建了一個listView與此字符串;現在我想打開一個不同的Activity,當我點擊我的listView的每個元素。我已經試過如何用我的listView項目打開不同的活動?
row.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent((Activity)context, Workouts.class));
}
});
但它只爲所有項目打開相同的Activity。如果你能爲我提供一個工作代碼,這將是非常好的,因爲我已經試圖解決這個問題。
MainActivity:
public class MainActivity extends Activity implements OnItemClickListener {
private DrawerLayout drawerLayout;
private ListView listView;
private ActionBarDrawerToggle drawerListener;
private MyAdapter MyAdapter;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
drawerLayout=(DrawerLayout) findViewById(R.id.drawerLayout);
listView=(ListView)findViewById(R.id.drawerList);
MyAdapter=new MyAdapter(this);
listView.setAdapter(MyAdapter);
listView.setOnItemClickListener(this);
drawerListener= new ActionBarDrawerToggle(this, drawerLayout,
R.drawable.listmenu,
R.string.drawer_open, R.string.drawer_close){
@Override
public void onDrawerClosed(View drawerView) {
// TODO Auto-generated method stub
super.onDrawerClosed(drawerView);
}
@Override
public void onDrawerOpened(View drawerView) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, " Drawer Opened ",
Toast.LENGTH_SHORT).show();
}
};
drawerLayout.setDrawerListener(drawerListener);
getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
if (drawerListener.onOptionsItemSelected(item))
{
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
super.onConfigurationChanged(newConfig);
drawerListener.onConfigurationChanged(newConfig);
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onPostCreate(savedInstanceState);
drawerListener.syncState();
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
}
public void selectItem(int position) {
listView.setItemChecked(position, true);
}
public void setTitle(String title)
{
getActionBar().setTitle(title);
class MyAdapter extends BaseAdapter {
private Context context;
String[] planets;
int[] images = { R.drawable.home, R.drawable.workout, R.drawable.week,
R.drawable.gallery, R.drawable.statistics, R.drawable.settings};
public MyAdapter(Context context) {
this.context=context;
planets=context.getResources().getStringArray(R.array.planets);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return planets.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return planets[position];
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View row =null;
if (convertView==null)
{
LayoutInflater inflater = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row=inflater.inflate(R.layout.custom_row, parent, false);
}
else
{
row = convertView
}
row.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent((Activity) context, Workouts.class));
}
});
TextView titleTextView = (TextView) row.findViewById(R.id.textView1);
ImageView titleImageView = (ImageView) row.findViewById(R.id.imageView1);
titleTextView.setText(planets[position]);
titleImageView.setImageResource(images[position]);
return row;
}
}
}
非常感謝,它工作完美,但我取代了「startActivity(新意圖((活動)上下文,I.class));」到「startActivity(new Intent(MainActivity.this,A.class));」,就像@SilentKnight的回答:) – ThanksForHelp