从输入显示到列表视图android的问题

问题描述 投票:0回答:1

我正在尝试使用宗地从输入(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();
            }
        }
    }
android listview parcelable
1个回答
0
投票

不需要

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();
        }
    });
}
© www.soinside.com 2019 - 2024. All rights reserved.