Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ListView:如何在单击ListView中的按钮时转到新活动?_Android - Fatal编程技术网

Android ListView:如何在单击ListView中的按钮时转到新活动?

Android ListView:如何在单击ListView中的按钮时转到新活动?,android,Android,我在MainActivity上有一个ListView,每个项目都包含一个textView和一个按钮 我想点击列表中的按钮进入一个活动(比如X)。 因此,我的第一个想法是在自定义适配器中为按钮设置onClickListener,并使用intent转到活动X。 我在自定义适配器中按钮的setOnClickListener中编写了以下内容: Intent Intent=newintent(MainAcivity.this、ActivityX.class) 我无法传递MainActivity。这是int

我在MainActivity上有一个ListView,每个项目都包含一个textView和一个按钮

我想点击列表中的按钮进入一个活动(比如X)。 因此,我的第一个想法是在自定义适配器中为按钮设置onClickListener,并使用intent转到活动X。 我在自定义适配器中按钮的
setOnClickListener
中编写了以下内容:

Intent Intent=newintent(MainAcivity.this、ActivityX.class)

我无法传递
MainActivity。这是intent的第一个参数,因为它不是封闭类

我能做什么


我的目标是从
main活动
转到
ActivityX
,单击
列表视图中的按钮

,您需要一个
上下文
。您可以从
活动
、从
片段
或从
视图
获取上下文

方法
onClick(视图)
为您提供所单击视图的引用。因此,您可以从该视图中获取上下文

例如:

button.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(final View viewClicked) {
        Intent intent = new Intent(viewClicked.getContext(), ActivityX.class);
    }
});
list.setAdapter(适配器);list.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView父级、Viewview、int位置、长id){
意向意向=新意向(MainAcivity.this、ActivityX.class);
}
});
或者你可以按位置打电话

                    list.setAdapter(adapter);
                    list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                        public void onItemClick(AdapterView<?> parent, Viewview,int position, long id) 
{if (position ==0){ 
Intent intent = new Intent(MainAcivity.this, ActivityX.class);
}
});
list.setAdapter(适配器);
list.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView父级、Viewview、int位置、长id)
{如果(位置==0){
意向意向=新意向(MainAcivity.this、ActivityX.class);
}
});

我建议采用以下方法

  • 创建一个类来实现支持列表的适配器
    ListAdapter
    (或者只是子类
    ArrayAdapter
  • 在该类中定义一个接口,该接口包含一个回调,该回调传递所单击按钮的标识符。 例如:
  • 公共接口列表按钮ClickListener{
    
    void onListButtonClicked(在适配器的构造函数中传递活动的引用。然后您可以启动到new
    activity
    Intent Intent=new Intent(上下文,ActivityX.class);
                        list.setAdapter(adapter);
                        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                            public void onItemClick(AdapterView<?> parent, Viewview,int position, long id) 
    {if (position ==0){ 
    Intent intent = new Intent(MainAcivity.this, ActivityX.class);
    }
    });
    
             public interface ListButtonClickListener{
                    void onListButtonClicked(<some identifier for the button that was clicked);
                }