Fragment的ListView项目界面定义中的按钮?

时间:2013-03-08 13:56:30

标签: android listview button interface fragment

在我的应用程序中,我有一个活动在操作栏标签导航模式中有两个片段,就像android开发者网站示例一样。

在我的第一个片段中,我有一个listview(它有自己的适配器),listview的每个项目都有一个名为+1的按钮。我想刷新第二个片段,在第一个片段中显示listview中的项目,点击它们的+1按钮。

我知道我必须使用接口。但我不知道如何使用它们。我在哪里定义界面?如何使用它?以及如何从活动中访问它以刷新第二个片段?

快速帮助会很棒。感谢。

1 个答案:

答案 0 :(得分:4)

如果您想在列表项目上单击

片段A:

public class FragmentA extends ListFragment {

OnItemSelectedListener mListener;

...
// Container Activity must implement this interface
public interface OnItemSelectedListener {
    public void onItemSelected(int position);
}
...

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    try {
        mListener = (OnItemSelectedListener) activity;
    } catch (ClassCastException e) {
        throw new ClassCastException(activity.toString() + " must implement OnItemSelectedListener");
    }
}

@Override
public void onListItemClick(ListView l, View v, int position, long id) {

    mCallback.onItemSelected(position);

    }   
}

ContainerActivity:

public class ContainerActivity extends FragmentActivity 
    implements FragmentA.OnItemSelectedListener
{

//...



public void onItemSelected(int Position/*pass anything which u want*/) 
    {

        SecondFragment second_fragment = (SecondFragment) getSupportFragmentManager().findFragmentById(R.id.fragmentB);

        if(second_fragment !=null)
        {
            second_fragment.UpdateUI(Position); 
        }

    }


 }

第二片段:

public class SecondFragment extends Fragment {

    ...
    public void UpdateUI(Position)
    {

    }

}

希望这会有所帮助。单击每个列表项内的按钮可能有点困难,但尝试相同的方法。您可能需要编写接口声明并在自定义适配器中调用。