如何根据在自定义列表视图中选择的项目将信息传递给下一个 activity
How to pass information to next activity based on which item was selected in custom list view
我正在尝试根据选择的列表视图项目将信息传递给应用程序中的下一个 activity。但是,单击自定义按钮(id:button_go)时会调用 startActivity。
我认为根据选择的列表视图项传递信息的常用方法是通过以下代码:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapter, View view, int position, long id){
Intent intent = new Intent(getActivity(), Detail_Activity.class);
}
});
但这在我的 class 中不起作用,因为它连接到一个按钮。我的列表视图片段中的代码如下。
class CustomAdapter extends BaseAdapter {
@Override
public int getCount() {
return testArray.length;
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
view = getActivity().getLayoutInflater().inflate(R.layout.customlayout,null);
Button button_go = (Button)view.findViewById(R.id.button_go);
button_go.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
}
// Perform action on click
//startActivity(new Intent(getActivity(), Detail_Activity.class));
}
});
return view;
}
}
}
在您的按钮 onClickListener
中创建您的 Intent
,并将单击的按钮的位置(或任何其他列表项特定信息)作为额外内容放在 Intent
中。
button_go.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(getActivity(), Detail_Activity.class));
intent.putExtra("position", i);
startActivity(intent);
}
});
然后获取按钮在新 Activity 的 onCreate()
中单击的位置:
Integer buttonPos = getIntent().getIntExtra("position");
我不确定你的问题是什么。
你能告诉我当你点击按钮时发生了什么吗?
尝试添加日志以确保调用了 onClick。
您的问题是您不知道如何在新 activity 中传递信息,或者您的 activity 没有启动?
仅供参考,您可以通过调用 getItem(position) 检索此位置的项目。
我正在尝试根据选择的列表视图项目将信息传递给应用程序中的下一个 activity。但是,单击自定义按钮(id:button_go)时会调用 startActivity。
我认为根据选择的列表视图项传递信息的常用方法是通过以下代码:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapter, View view, int position, long id){
Intent intent = new Intent(getActivity(), Detail_Activity.class);
}
});
但这在我的 class 中不起作用,因为它连接到一个按钮。我的列表视图片段中的代码如下。
class CustomAdapter extends BaseAdapter {
@Override
public int getCount() {
return testArray.length;
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
view = getActivity().getLayoutInflater().inflate(R.layout.customlayout,null);
Button button_go = (Button)view.findViewById(R.id.button_go);
button_go.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
}
// Perform action on click
//startActivity(new Intent(getActivity(), Detail_Activity.class));
}
});
return view;
}
}
}
在您的按钮 onClickListener
中创建您的 Intent
,并将单击的按钮的位置(或任何其他列表项特定信息)作为额外内容放在 Intent
中。
button_go.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(getActivity(), Detail_Activity.class));
intent.putExtra("position", i);
startActivity(intent);
}
});
然后获取按钮在新 Activity 的 onCreate()
中单击的位置:
Integer buttonPos = getIntent().getIntExtra("position");
我不确定你的问题是什么。 你能告诉我当你点击按钮时发生了什么吗? 尝试添加日志以确保调用了 onClick。
您的问题是您不知道如何在新 activity 中传递信息,或者您的 activity 没有启动?
仅供参考,您可以通过调用 getItem(position) 检索此位置的项目。