Android 从ArrayAdapter获取碎片管理器
我有一个从自定义ArrayAdapter填充的列表视图。在每个视图中都有一个按钮。我想在单击按钮时更改当前片段。这是我的代码:Android 从ArrayAdapter获取碎片管理器,android,Android,我有一个从自定义ArrayAdapter填充的列表视图。在每个视图中都有一个按钮。我想在单击按钮时更改当前片段。这是我的代码: public class CheckInSArrayAdapter extends ArrayAdapter<JSONObject> { @Override public View getView(int position, View convertView, ViewGroup parent) { return getV
public class CheckInSArrayAdapter extends ArrayAdapter<JSONObject> {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return getViewOptimize(position, convertView, parent);
}
public View getViewOptimize(int position, View convertView, ViewGroup parent) {
......
viewHolder.commentBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
??? <<<<<
});
return convertView;
}
private class ViewHolder {
...
public Button commentBtn;
}
}
公共类CheckInSArrayAdapter扩展了ArrayAdapter{
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
返回getViewOptimize(位置、转换视图、父级);
}
公共视图getViewOptimize(int位置、视图转换视图、视图组父视图){
......
viewHolder.commentBtn.setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v){
这么晚了,但这里没有人回答这个问题
您可以使用以下命令在getview方法中调用片段管理器
FragmentManager fm = ((Activity)context).getFragmentManager();
getFragmentManager()是活动类的一个方法
比如说
holder.tvBuy.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
Fragment fragment;
fragment = new Buy();
((Activity)context).getFragmentManager().beginTransaction().replace(R.id.content_frame,fragment).commit();
}
}
在这里,您需要将活动作为上下文传递给适配器
希望它能帮助某人……好吧,也许我有点晚了,但是,也许它能帮助一些人做到这一点
在您调用适配器的类中,您需要扩展或实现“FragmentActivity”。然后您的活动将包含fragmentManager
当您调用适配器时,请使用扩展FragmentActivity的类调用它
MyAdapterName = new MyAdapterName(MyClassName.this, Objects);
然后在getView()中的适配器中执行此操作
final Context context = parent.getContext();
FragmentManager fm = ((Activity) context).getFragmentManager();
小心使用好的android FragementManager
-android.app.FragmentManager
不是android.support.v4.app.FragmentManager;您可以在适配器中定义回调并在构造中传递实例,或者您可以签出listView.setOnItemClickListener(),这对我来说很有效。最有价值的部分是((活动)上下文)。getFragmentManager().beginTransaction().replace(R.id.content\u frame,fragment)。commit();
就像我习惯于使用getActivity()一样
而不是那样创建一个。谢谢你……你刚刚救了我的命:D我想知道你是从哪里得到这个主意的???我的意思是你有一些url或文档要看……只是为了理解你刚才说的did@Ayoub很高兴听到,这很有帮助。我没有任何文档或url,因为这些代码是我自己项目的一部分。可能吗要使用android.support.v4.app.FragmentManager;@VV我不知道,但您可以尝试,只需将导入替换为android.support.v4.app.FragmentManager,看看是否可以!