从外部类中访问片段布局中的视图

时间:2018-08-01 12:59:27

标签: java android android-fragments

我正在尝试从外部类访问TextViewTextViewlayout夸大的fragment的一部分。我该如何实现?我无法引用该片段,因为我还有其他三个具有不同布局的片段。

编辑:

我有这个片段,我想在其中访问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
    }

2 个答案:

答案 0 :(得分:0)

尝试一下:

1。使用Java接口。

public interface MyListener {
    // you can define any parameter as per your requirement
    public void callback(View view, String result);
}

2。在您的片段类中:

 public class MyActivity extends fragment implements MyListener {
   @override        
   public void onCreate(){
        MyButton m = new MyButton(this);
   }

    // method is invoked when MyButton is clicked
    @override
    public void callback(View view, String result) {   
        // do your stuff here
    }
}

3。在您的适配器类中:

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

这里是2和3,也可以是可选的,您想共享片段或baseAdapter的数据。它由您选择。我给了两个example.let,当值更新时通过接口尝试

让我知道是否可以。

答案 1 :(得分:0)

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

为此,请在您的适配器中编写一个简单的界面

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);
        }
    });
}