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