我有一个活动,我可以从中调用对话框。在积极对话框的事件中,我试图将“showAddPhraseDialog”方法的自定义项添加到List(phraseToSave),这是活动类的属性。
但是列表大小不会增加。
活动类:
public class AddActivity extends AppCompatActivity {
private RecyclerView rv_select_person;
private ChildHorizontalAdapter personAdapter;
private RecyclerView rv_conversation;
private UnsavedConversationAdapter conversationAdapter;
private List<UnsavedPhrase> phrasesToSave;
private List<Child> personsList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
phrasesToSave = new ArrayList<UnsavedPhrase>();
// conversation widgets
rv_conversation = (RecyclerView) findViewById(R.id.rv_conversation);
conversationAdapter = new UnsavedConversationAdapter(phrasesToSave);
LinearLayoutManager llm = new LinearLayoutManager(AddActivity.this);
rv_conversation.setLayoutManager(llm);
rv_conversation.setAdapter(conversationAdapter);
...
}
private void showAddPhraseDialog(final Child phrase_author)
{
boolean wrapInScrollView = true;
new MaterialDialog.Builder(AddActivity.this)
.title(R.string.label_what_was_said)
.customView(R.layout.dialog_add_phrase, wrapInScrollView)
.positiveText(R.string.button_add)
.onPositive(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
EditText tePhrase = (EditText)dialog.findViewById(R.id.te_phrase);
String phrase_text = tePhrase.getText().toString();
if (!StringUtils.isNullAndEmpty(phrase_text)) {
UnsavedPhrase new_phrase = new UnsavedPhrase(phrase_text, phrase_author);
phrasesToSave.add(new_phrase);
}
}
})
.show();
}
}
答案 0 :(得分:0)
很抱歉迟到的回复你忘了通知适配器
if(conversationAdapter != null)
{
conversationAdapter.notifyDataSetChanged();
}
答案 1 :(得分:0)
尝试调试并检查 phraseToSave.add(new_phrase); 之后,列表中有一个新元素。如果它有一个新元素,但您没有在UI中看到该元素,则应通知RecyclerView它的数据集已更改。尝试调用 notifyDataSetChanged()。 Docs为此。
您的代码看起来很好。如果添加后面的 phraseToSave 中没有新元素,请尝试清理项目。 构建 - &gt;清洁项目