Android 进入第三个列表视图后访问第一个列表视图

Android 进入第三个列表视图后访问第一个列表视图,android,Android,我有一个关于列表视图的问题,完全把我弄糊涂了 我将为我最喜欢的歌手设计一个播放歌曲的应用程序,下面是我的工具: AlbumActivity----->ItemActivity(包含歌曲)--->PlayerActivity 这是我的相册活动代码: public class AlbumActivity extends Activity implements Variable { @Override protected void onCreate(Bundle savedInstanceState

我有一个关于列表视图的问题,完全把我弄糊涂了

我将为我最喜欢的歌手设计一个播放歌曲的应用程序,下面是我的工具:

AlbumActivity----->ItemActivity(包含歌曲)--->PlayerActivity

这是我的相册活动代码:

public class AlbumActivity extends Activity implements Variable {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.album_list);



    populatecantactlist();//fill listview with my item
    registerClickCallback();//What to do when click on item


  }

private void populatecantactlist() {


    ListView listview=(ListView)findViewById(R.id.list);

    ArrayAdapter<String> adapter=new mylistAdapter();

    listview.setAdapter(adapter);

}

public class mylistAdapter extends ArrayAdapter<String>{

    private  mylistAdapter(){
        super(AlbumActivity.this,R.layout.album_list_item,albumnames);
    }


    @Override
    public View getView(int position,View convertView,ViewGroup parent){

        View item_view=convertView;

        if(item_view== null){             item_view=getLayoutInflater().inflate(R.layout.album_list_item,parent,false);
        }

        ImageView iv=(ImageView)item_view.findViewById(R.id.imageView1);

        iv.setImageResource(icon_num[position]);

        TextView tv1=(TextView)item_view.findViewById(R.id.txt_name);
        tv1.setText(albumnames[position]);

        return item_view;}

    }







     private void registerClickCallback() {

    ListView list=(ListView)findViewById(R.id.list);
    list.setOnItemClickListener(new OnItemClickListener() {
    //I want to after on each item select go to new activity which populate 
        //information about new album

        @Override
        public void onItemClick(AdapterView<?> parent, View viewclicked,
                int position, long id) {

            Intent i2=new Intent("com.example.ItemActivity");




            Bundle extras=new Bundle();
            extras.putInt("PositionItemClicked", position);
            i2.putExtras(extras);


            startActivity(i2);


        }});
但我不知道在itemactivity中选择的项目属于什么相册(意味着相册活动)?一天后我不知道该做什么? 你认为这是一种复杂的方式吗?你能给我一种更好的方式吗


谢谢。

只需将项目活动更改为:

  String [] names;
  int  icon_num;

  Bundle bundle;


 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.album_list);



bundle=getIntent().getExtras();
int i=bundle.getInt("PositionItemClicked");

switch (i){

case 0:
    names=name1;
    icon_num=R.drawable.name1;
    break;
case 1:
    names=name2;
    icon_num=R.drawable.name2;
    break;
case 2:
    names=name3;
    icon_num=R.drawable.name3;
    break;
case 3:
    names=name4;
    icon_num=R.drawable.name4;
    break;
case 4:
    names=name5;
    icon_num=R.drawable.name5;
    break;
case 5:
    names=name6;
    icon_num=R.drawable.name6;
    break;
case 6:
    names=name7;
    icon_num=R.drawable.name7;
    break;
case 7:
    names=name8;
    icon_num=R.drawable.name8;
    break;

case 8:
    names=name9;
    icon_num=R.drawable.name9;
    break;
case 9:
    names=name10;
    icon_num=R.drawable.name10;
    break;
case 10:
    names=name11;
    icon_num=R.drawable.name11;
    break;
case 11:
    names=name12;
    icon_num=R.drawable.name12;
    break;

}


populatecantactlist();//fill listview with my item
registerClickCallback();//What to do when click on item



 }



  public void populatecantactlist() {


ListView listview=(ListView)findViewById(R.id.list);

ArrayAdapter<String> adapter=new mylistAdapter();

listview.setAdapter(adapter);


}

 public class mylistAdapter extends ArrayAdapter<String>{



private  mylistAdapter(){

    super(ItemActivity.this,R.layout.album_list_item,names);
}





@Override
public View getView(int position,View convertView,ViewGroup parent){

    View item_view=convertView;

    if(item_view== null){

          item_view=getLayoutInflater().inflate(R.layout.album_list_item,parent,false);
    }

    ImageView iv=(ImageView)item_view.findViewById(R.id.imageView1);

    iv.setImageResource(icon_num);

    TextView tv1=(TextView)item_view.findViewById(R.id.txt_name);

    tv1.setText(names[position]);

    return item_view;
    }

}

private void registerClickCallback() {

final ListView list=(ListView)findViewById(R.id.list);
list.setOnItemClickListener(new OnItemClickListener() {
//I want to after on each item select go to new activity which populate with
    //information about new album

    @Override
    public void onItemClick(AdapterView<?> parent, View viewclicked,
            int position, long id) {





        Intent i3=new Intent("com.example.PlayerActivity");

        Bundle extras=new Bundle();
        extras.putInt("i",bundle.getInt("PositionItemClicked");
        i3.putExtras(extras);

        startActivity(i3);




    }});
String[]名称;
int-icon_-num;
束;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.album_列表);
bundle=getIntent().getExtras();
int i=bundle.getInt(“PositionItemClicked”);
开关(一){
案例0:
名称=名称1;
icon_num=R.drawable.name1;
打破
案例1:
名称=名称2;
icon_num=R.drawable.name2;
打破
案例2:
名称=名称3;
icon_num=R.drawable.name3;
打破
案例3:
名称=名称4;
icon_num=R.drawable.name4;
打破
案例4:
名称=名称5;
icon_num=R.drawable.name5;
打破
案例5:
名称=名称6;
icon_num=R.drawable.name6;
打破
案例6:
名称=名称7;
icon_num=R.drawable.name7;
打破
案例7:
名称=名称8;
icon_num=R.drawable.name8;
打破
案例8:
名称=名称9;
icon_num=R.drawable.name9;
打破
案例9:
名称=名称10;
icon_num=R.drawable.name10;
打破
案例10:
名称=名称11;
icon_num=R.drawable.name11;
打破
案例11:
名称=名称12;
icon_num=R.drawable.name12;
打破
}
PopulateCanActList();//用我的项目填充listview
registerClickCallback();//单击项时要做什么
}
public void populatecantactlist(){
ListView ListView=(ListView)findViewById(R.id.list);
ArrayAdapter=新的mylistAdapter();
setAdapter(适配器);
}
公共类mylistAdapter扩展了ArrayAdapter{
私有mylistAdapter(){
super(ItemActivity.this,R.layout.album\u list\u item,name);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图项_View=convertView;
如果(项目视图==null){
item_view=GetLayoutFlater().充气(R.layout.album_list_item,父项,false);
}
ImageView iv=(ImageView)项_view.findViewById(R.id.imageView1);
iv.setImageResource(图标数量);
TextView tv1=(TextView)item_view.findViewById(R.id.txt_name);
tv1.setText(名称[位置]);
返回项目视图;
}
}
私有无效注册表ClickCallback(){
最终ListView列表=(ListView)findViewById(R.id.list);
list.setOnItemClickListener(新的OnItemClickListener(){
//我想在每个项目上选择“转到新活动”,该活动以
//关于新专辑的信息
@凌驾
公共视图单击(AdapterView父级,视图单击,
内部位置,长id){
意图i3=新意图(“com.example.PlayerActivity”);
Bundle extras=新Bundle();
额外putInt(“i”,bundle.getInt(“PositionItemClicked”);
i3.临时演员(临时演员);
星触觉(i3);
}});

在您的AlbumActivity中,您如何准确地确定要显示哪些歌曲,您必须传递某种参数,以便它知道哪些歌曲应该显示在lsit中,对吗?我不知道您的想法。我使用intent将有关所选项目的数据传递到下一个活动(意味着ItemActivity)…!您得到了答案!!!!下面是答案。。。
 public class PlayerActivity extends Activity implements Variable {



@Override
protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
    setContentView(R.layout.player_layout);


    Bundle bundle=getIntent().getExtras();
    int i=bundle.getInt("i");

     Toast.makeText(PlayerActivity.this,"hello"+i,Toast.LENGTH_LONG).show();

     }}
  String [] names;
  int  icon_num;

  Bundle bundle;


 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.album_list);



bundle=getIntent().getExtras();
int i=bundle.getInt("PositionItemClicked");

switch (i){

case 0:
    names=name1;
    icon_num=R.drawable.name1;
    break;
case 1:
    names=name2;
    icon_num=R.drawable.name2;
    break;
case 2:
    names=name3;
    icon_num=R.drawable.name3;
    break;
case 3:
    names=name4;
    icon_num=R.drawable.name4;
    break;
case 4:
    names=name5;
    icon_num=R.drawable.name5;
    break;
case 5:
    names=name6;
    icon_num=R.drawable.name6;
    break;
case 6:
    names=name7;
    icon_num=R.drawable.name7;
    break;
case 7:
    names=name8;
    icon_num=R.drawable.name8;
    break;

case 8:
    names=name9;
    icon_num=R.drawable.name9;
    break;
case 9:
    names=name10;
    icon_num=R.drawable.name10;
    break;
case 10:
    names=name11;
    icon_num=R.drawable.name11;
    break;
case 11:
    names=name12;
    icon_num=R.drawable.name12;
    break;

}


populatecantactlist();//fill listview with my item
registerClickCallback();//What to do when click on item



 }



  public void populatecantactlist() {


ListView listview=(ListView)findViewById(R.id.list);

ArrayAdapter<String> adapter=new mylistAdapter();

listview.setAdapter(adapter);


}

 public class mylistAdapter extends ArrayAdapter<String>{



private  mylistAdapter(){

    super(ItemActivity.this,R.layout.album_list_item,names);
}





@Override
public View getView(int position,View convertView,ViewGroup parent){

    View item_view=convertView;

    if(item_view== null){

          item_view=getLayoutInflater().inflate(R.layout.album_list_item,parent,false);
    }

    ImageView iv=(ImageView)item_view.findViewById(R.id.imageView1);

    iv.setImageResource(icon_num);

    TextView tv1=(TextView)item_view.findViewById(R.id.txt_name);

    tv1.setText(names[position]);

    return item_view;
    }

}

private void registerClickCallback() {

final ListView list=(ListView)findViewById(R.id.list);
list.setOnItemClickListener(new OnItemClickListener() {
//I want to after on each item select go to new activity which populate with
    //information about new album

    @Override
    public void onItemClick(AdapterView<?> parent, View viewclicked,
            int position, long id) {





        Intent i3=new Intent("com.example.PlayerActivity");

        Bundle extras=new Bundle();
        extras.putInt("i",bundle.getInt("PositionItemClicked");
        i3.putExtras(extras);

        startActivity(i3);




    }});