从另一个片段添加项目后,Recycler视图不会动态更新列表项

时间:2016-09-24 07:33:56

标签: android android-fragments android-recyclerview

我有三个片段。一个片段显示了回收者视图列表项,另一个片段打开了一个对话框片段,它是一种形式。它需要数据并添加到列表中。现在,在添加列表项之后,列表应该更新为默认行为,但它没有得到更新。但是当我在关闭之后打开活动时它会来。任何人都可以告诉我或者可以提供某种参考咨询,这应该是什么问题。谢谢。

public class MyDialogFragment extends DialogFragment implements TextView.OnEditorActionListener {
List<CardListDataClass> listDataClasses = new ArrayList<>();
Fragment fragment;
FragmentTransaction ft;
List<CardListDataClass> list;
UserNameListener userNameListener;
private EditText mEditText, mEditText1, mEditText2;

// Empty constructor required for DialogFragment
public MyDialogFragment() {

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    final View view = inflater.inflate(R.layout.fragment_item_layout, container);
    mEditText = (EditText) view.findViewById(R.id.detailEdit);
    mEditText1 = (EditText) view.findViewById(R.id.expEdit);
    mEditText2 = (EditText) view.findViewById(R.id.expExtra);

    CardView submit = (CardView) view.findViewById(R.id.submitDetail);
    submit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String det, exp, extra;
            det = mEditText.getText().toString();
            exp = mEditText1.getText().toString();
            extra = mEditText2.getText().toString();
            createDb createDb = new createDb(view.getContext());
            createDb.dbopen();
            createDb.createEntry(det, exp);
            createDb.close();
            listDataClasses.add(new CardListDataClass(det, exp));
            getDialog().dismiss();
        }
    });

    // set this instance as callback for editor action
    mEditText.setOnEditorActionListener(this);
    getDialog().getWindow().setSoftInputMode(
            WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
    getDialog().setTitle("Please enter details");
    return view;
}

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    try {
        userNameListener = (UserNameListener) getActivity();
    } catch (ClassCastException c) {
        Log.e("ClassCastException", "yeah");
    }
}

@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
    // Return input text to activity
    userNameListener.onFinishUserDialog(mEditText.getText().toString(), mEditText1.getText().toString());
    this.dismiss();
    return true;
}

public interface UserNameListener {
    void onFinishUserDialog(String detail, String exp);
}

这是一个对话框片段,列表将在另一个片段中更新。

  

大家好,感谢您的关心。我的问题现在解决了。我正在引用列表的另一个新对象来添加项目。所以这个项目并没有在那里添加。

     

但是我在这里有另一个问题,我通过指定位置项不是动态添加来添加项目,即

list.add(position,new item(a,b))

0 个答案:

没有答案