Android 如何获取已打开并显示其他活动的列表项

Android 如何获取已打开并显示其他活动的列表项,android,listview,android-activity,Android,Listview,Android Activity,我在活动a中有一个列表视图。单击列表项后,它将打开另一个activityB。活动B有一个按钮,当单击该按钮时,该按钮将显示活动B作为toast消息单击时所源自的列表项。这是可能的。 请帮帮我 这是我在活动B中尝试的代码 Button btn = (Button) findViewById(R.id.singleitemviewButton); btn.setOnClickListener(new OnClickListener(){ @Override p

我在活动a中有一个列表视图。单击列表项后,它将打开另一个activityB。活动B有一个按钮,当单击该按钮时,该按钮将显示活动B作为toast消息单击时所源自的列表项。这是可能的。 请帮帮我

这是我在活动B中尝试的代码

Button btn = (Button) findViewById(R.id.singleitemviewButton);
    btn.setOnClickListener(new OnClickListener(){
        @Override
        public void onClick(View v){
            List< MyList> mlist = null;

            MyList codes = (MyList) getItem(position);
        }

            private Object getItem(int position)
            {
                return mlist.get(position);
            }
    });
按钮btn=(按钮)findViewById(R.id.singleitemviewButton);
btn.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
列表mlist=null;
MyList代码=(MyList)getItem(位置);
}
私有对象getItem(int位置)
{
返回mlist.get(位置);
}
});
我在表示未知变量位置的位置处出错

他们的活动a单击侦听器

@Override
public void onItemClick(AdapterView<?> p1, View view, int position, long p4)
{
    Codelist codes = (CodeList) get(position);

                Intent intent = new Intent(ActivityA.this, ActivityB.class);


                intent.putExtra("selected item" , codes);
                 startActivity(intent);

}
@覆盖
公共虚线单击(适配器视图p1、视图视图、内部位置、长p4)
{
代码列表代码=(代码列表)获取(位置);
意向意向=新意向(ActivityA.this,ActivityB.class);
意向。额外(“选定项目”,代码);
星触觉(意向);
}
新尝试的代码

Button favbtn = (Button) findViewById(R.id.singleitemviewButton);
    favbtn.setOnClickListener(new OnClickListener(){
        @Override
        public void onClick(View v){
            List <CodeList> codelist = null;
            Bundle extras = getIntent().getExtras();

            CodeList codes = extras.getParcelable("selected item");
            if(checkArchivedItem(codes)){

                        archvPrefrnces.removeArchive(SingleItemView.this, codes);
                    }else{

                        archvPrefrnces.addArchive(SingleItemView.this, codes);


                        Toast.makeText(SingleItemView.this, getString(R.string.archive_added), Toast.LENGTH_SHORT).show();
                    }


        }
        private boolean checkArchivedItem(CodeList checkCodes) {
                    boolean check = false;
                    List<CodeList> archives = archvPrefrnces.getArchives(getApplicationContext());
                    if (archives != null) {
                        for (CodeList codes : archives) {
                            if (codes.equals(checkCodes)) {
                                check = true;
                                break;
                            }
                        }
                    }
                    return check;
                }       



    });
按钮favbtn=(按钮)findViewById(R.id.singleitemviewButton);
favbtn.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
列表代码列表=空;
Bundle extras=getIntent().getExtras();
代码列表代码=额外的getParcelable(“所选项目”);
如果(检查归档项目(代码)){
archvprefrences.removeArchive(SingleItemView.this,代码);
}否则{
archvprefrences.addArchive(SingleItemView.this,代码);
Toast.makeText(SingleItemView.this、getString(添加了R.string.archive)、Toast.LENGTH.SHORT.show();
}
}
私有布尔checkArchivedItem(代码列表检查代码){
布尔检查=假;
List archives=archvprefrences.getArchives(getApplicationContext());
如果(存档!=null){
用于(代码列表代码:存档){
if(代码等于(检查代码)){
检查=正确;
打破
}
}
}
退货检查;
}       
});

当您在项目上启动新活动时,单击可发送您希望在toast中显示的职位或其他详细信息,并将其传递给活动,如下所示

intent.putExtra("details 1", "position or some thing");
intent.putExtra("details 2", "something");
intent.putExtra("details", "something");
startActivity(intent);
现在在活动中,您可以通过这样做获得

String s1 = getIntent().getStringExtra("details 1");
Stirng s2 = getIntent().getStringExtra("details 2");

使您要发送的模型可随身携带。然后,在活动A中选择一个项目时,写下:

   Intent intent = new Intent(this, B.class);
   intent.putExtra("SELECTED_ITEM", selectedItemObject);
   startActivity(intent);
然后在活动B中,按钮单击侦听器的代码应该如下所示:

Button btn = (Button) findViewById(R.id.singleitemviewButton);
btn.setOnClickListener(new OnClickListener(){
    @Override
    public void onClick(View v){
        Bundle extras = getIntent().getExtras();
        Item item extras.getParcelable("SELECTED_ITEM"); 
    }
});

你到底想做什么?在活动B中显示您刚才单击的项目的一些详细信息,或者关闭活动B以返回活动A(以及所有列表)?@Rob显示单击了哪个项目的详细信息OK,正如@Bhawna Raheja所解释的,您可以在模型中使用“parcelable”,这意味着将您的对象放入意图中(从A转到B)然后在B中获得你需要的数据。希望它能起作用:)@Rob Yeah感谢你调查我的问题。我正在尝试out@Rob它是否按照您所说的intent.putExtra(“选定项”,mlist.get(position))添加了此项;但是得到一个错误,说没有适用的方法,正如您所说的intent.putExtra(“selected item”,mlist.get(position));但是,如果出现一个错误,说没有适用的方法,您可以将代码发布在此处以及您编写代码的位置吗?我已在“活动A on item click listener”中编写了该代码。您是否将模型打包或序列化?您的应用程序中必须有一个名为MyList的类。进入该类并使其可序列化如下:MyList实现可序列化{//your code},然后将活动B中的代码更改为MyList item=extras.getSerializable(“SELECTED_item”);你说位置什么的,但是,如何获得位置您能告诉我您希望从列表中显示什么吗?单击按钮时不显示w我希望打开“活动联系人”按钮的项目通过共享首选项添加到收藏夹活动我已经创建了共享首选项,并通过执行添加到收藏夹的过程活动A中的OnItemLongClicllLener。但我想通过活动B中的按钮单击来执行相同的操作。希望您理解。请帮助我无论你在哪里获得你的列表,你必须有一个特定项目的唯一id,我现在假设,当你点击项目时,你会传递详细信息,如唯一id或答案中所示。现在,在活动B中,单击按钮即可获得意图和额外内容,并将其传递给prefrence,因此,在创建fravoriets列表时,请检查prefrence中的id,并创建一个仅包含这些内容的列表或隐藏其他内容的列表