首页 > 解决方案 > 从外部类访问片段布局中的视图

问题描述

我正在尝试TextView从外部班级访问 a 。TextView是由 alayout膨胀的 a 的一部分fragment。我如何实现这一目标?我无法引用该片段,因为我有 3 个其他具有不同布局的片段。

编辑 :

我有这个片段,我想在其中访问 totalTxt :

public class FragmentCart extends Fragment {
    private TextView totalTxt;
    private ListView itemList;

    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_cart, container, false);
        itemList = (ListView)view.findViewById(R.id.itemList);
        itemList.setAdapter(MainActivity.cart);
        return view;
    }

我有这门课

    public class someClass extends BaseAdapter {
         //everytime the data here is changed, I would like to update 
           the value of the totalTxt above from this class
    }

标签: javaandroidandroid-fragments

解决方案


通过提供一个简单的回调。

为此,在您的适配器中编写一个简单的接口

public interface OnDataChangeListener{
    public void onDataChanged(String value);
}

并为侦听器添加一个设置器(也在适配器中)

OnDataChangeListener mOnDataChangeListener;
public void setOnDataChangeListener(OnDataChangeListener onDataChangeListener){
    mOnDataChangeListener = onDataChangeListener;
}

现在将附加代码添加到 baseadapter 中的以下块

private void conditionOfValuechanged() {
    ...
    if(mOnDataChangeListener != null){
        mOnDataChangeListener.onDataChanged(data.size());
    }
}

在活动中,您需要注册监听器

protected void onCreate(Bundle savedInstanceState) {
    ...
    adapter.setOnDataChangeListener(new Sold_item_adaptor.OnDataChangeListener(){
        public void onDataChanged(String value){
            //do whatever here
             txtTotal.setText(value);
        }
    });
}

推荐阅读