我正在尝试使用宗地从输入(AddActivity)添加到ListView(MainActivity)。单击添加按钮后,Main的ListView中什么都没有显示。
验证所有输入后,我使用intent.putExtra(ADD_CITAT_KEY,citat);发送对象;
**AddActivity:**
public static final String ADD_CITAT_KEY = "addCitatKey";
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean ok=true;
String inputTextAutor=mEditTextAutor.getText().toString();
if(inputTextAutor==null||inputTextAutor.trim().isEmpty() ||inputTextAutor.length()<3){
ok=false;
mEditTextAutor.setError("Autor invalid");
mEditTextAutor.requestFocus();
}
String inputTextTxt=mEditTextTxt.getText().toString();
if(inputTextTxt==null||inputTextTxt.trim().isEmpty() ||inputTextTxt.length()<3){
ok=false;
mEditTextTxt.setError("Autor invalid");
mEditTextTxt.requestFocus();
}
if(mEditTextNumarApriecieri.getText().toString().length()==0){
mEditTextNumarApriecieri.setText("0");
}
int inputTextNumar=Integer.parseInt(mEditTextNumarApriecieri.getText().toString());
if(inputTextNumar<=0){
ok=false;
mEditTextNumarApriecieri.setError("Introduceti o durata>=0");
mEditTextNumarApriecieri.requestFocus();
}
String spinnerInput=mSpinnerCategorii.getSelectedItem().toString();
if(ok ==true){
Citat citat=new Citat(inputTextAutor,inputTextTxt,inputTextNumar,spinnerInput);
intent=getIntent();
intent.putExtra(ADD_CITAT_KEY,citat);
setResult(RESULT_OK,intent);
finish();
Log.d("Trimitere","citat trimis: " +citat.toString());
}
}
});
使用onActivityResult从AddActivity接收对象。但是什么也没显示,我不知道问题出在哪里。
**MainActivity:**
public static final int REQUEST_CODE_ADD_CITAT = 200;
ListView mListView;
List<Citat> listaCitate=new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mListView=findViewById(R.id.listview);
ArrayAdapter<Citat> adapter=new ArrayAdapter<>(getApplicationContext(),android.R.layout.simple_list_item_1,listaCitate);
mListView.setAdapter(adapter);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==REQUEST_CODE_ADD_CITAT&&resultCode==RESULT_OK&&data!=null)
{
Citat citat=data.getParcelableExtra(ADD_CITAT_KEY);
Log.d("Tag",citat.toString());
if(citat!=null)
{
Toast.makeText(getApplicationContext(),citat.toString(),Toast.LENGTH_SHORT).show();
ArrayAdapter<Citat> adapter=(ArrayAdapter<Citat>) mListView.getAdapter();
adapter.notifyDataSetChanged();
}
}
}
不需要
ArrayAdapter<Citat> adapter=(ArrayAdapter<Citat>) mListView.getAdapter();
在onActivityResult中,只需公开“ ArrayAdapter适配器”
现在在onActivityResult中
if(citat!=null){
listaCitate.add(citat);
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),citat.toString(),Toast.LENGTH_SHORT).show();
adapter.notifyDataSetChanged();
}
});
}