我正在尝试从外部类访问TextView
。 TextView
是layout
夸大的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
}
答案 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);
}
});
}