从ListView传递值到EditText

时间:2014-12-05 13:04:28

标签: android listview android-intent android-activity android-edittext

我得到一个活动,其中一个有3个Clickables EditTexts是3个不同的搜索ListViews与MatchCode by ButtonClick开始一个新的活动

但是当我得到ListView上的第一个值(1°EditText)时,它出现在EditText(MainActivity)中是如何预期的,当我调用第二个和第三个EditText时哪个是其他可点击的并获取值,擦除所有其他的EditTexts在活动中任何想法为什么会发生这种情况?

我知道我可能需要以设置和获取值来对待这些操作,但我遇到了麻烦所以我发布了代码和照片让你们帮助我,

可能是我不知道的一些简单的解决方案,或者我无法做到这一点,请告诉我如何才能获得解决方案......

这是一张正在发生的照片:

enter image description here

这是我主要活动中的代码

public class Formulario_ItemNota extends Formulario_Nota {
private ListView listaProblemas;
private ItemNota_Helper itemnota_helper;
private List<ItemNota> itemnotas;
private ItemNota itemnotaSelecionado;
private Intent int_conjunto;
private Intent int_problema;

private EditText ETconjunto;
private EditText ETproblema;

protected void onCreate(Bundle savedInstanceState) {
    System.out.println("Daniel: onCreate" + new Date());

    super.onCreate(savedInstanceState);
    setContentView(R.layout.form_itemnota);

    this.itemnota_helper = new ItemNota_Helper(this);

    ETconjunto = (EditText) findViewById(R.id.ET_conjunto);
    ETconjunto.setOnClickListener(new OnClickListener() {
        public void onClick(View view) {
            Intent material = new Intent(Formulario_ItemNota.this, ListaMateriais.class);
            startActivity(material);
        }
    });

    ETproblema = (EditText) findViewById(R.id.ET_problemas);
    ETproblema.setOnClickListener(new OnClickListener() {
        public void onClick(View view) {
            Intent problema = new Intent(Formulario_ItemNota.this, ListaProblemas.class);
            startActivity(problema);
        }
    });

    final EditText ETprocedencia = (EditText) findViewById(R.id.ET_procedencia);
    ETprocedencia.setOnClickListener(new OnClickListener() {
        public void onClick(View view) {
            Intent procedencia = new Intent(Formulario_ItemNota.this, ListaProcedencia.class);
            startActivity(procedencia);
        }
    });

    Intent int_conjunto = getIntent();
    String tEXT_conjunto = int_conjunto.getStringExtra("TextMateriais");
    EditText et_conj = (EditText) findViewById(R.id.ET_conjunto);
    System.out.println("conjunto: " + et_conj);
    ETconjunto.setText(tEXT_conjunto, TextView.BufferType.EDITABLE);

    Intent int_problema = getIntent();
    String tEXT_problema = int_problema.getStringExtra("TextProblemas");
    EditText et_problema = (EditText) findViewById(R.id.ET_problemas);
    System.out.println("problema: " + et_problema);
    ETproblema.setText(tEXT_problema, TextView.BufferType.EDITABLE);

    Intent int_procedencia = getIntent();
    String tEXT_procedencia = int_procedencia.getStringExtra("TextProcedencia");
    EditText et_procedencia = (EditText) findViewById(R.id.ET_procedencia);
    et_procedencia.setText(tEXT_procedencia, TextView.BufferType.EDITABLE);

    Stara_DB ItemNotaDao = new Stara_DB(Formulario_ItemNota.this);
    itemnotas = ItemNotaDao.getListaIN();
    ItemNotaDao.close();

    ArrayAdapter<ItemNota> adapter = new ArrayAdapter<ItemNota>(this, android.R.layout.simple_list_item_1, itemnotas);
    listaProblemas = (ListView) findViewById(R.id.lista_descr_problemas);
    listaProblemas.setAdapter(adapter);
    registerForContextMenu(listaProblemas);

}

private void carregaListaItemNota() {
    Stara_DB ItemNotaDao = new Stara_DB(Formulario_ItemNota.this);
    List<ItemNota> itensnotas = ItemNotaDao.getListaIN();
    ItemNotaDao.close();

    ArrayAdapter<ItemNota> adapter = new ArrayAdapter<ItemNota>(this, android.R.layout.simple_list_item_1, itensnotas);
    this.listaProblemas.setAdapter(adapter);
}

public void onCreateContextMenu(ContextMenu menuItem, View vItem, ContextMenuInfo menuInfoItem) {

    super.onCreateContextMenu(menuItem, vItem, menuInfoItem);
    listaProblemas = (ListView) findViewById(R.id.lista_descr_problemas);
    MenuItem editar = menuItem.add("Editar");
    editar.setOnMenuItemClickListener(new OnMenuItemClickListener() {
        public boolean onMenuItemClick(MenuItem item) {
            return true;
        }
    });

    MenuItem deletar = menuItem.add("Deletar");
    deletar.setOnMenuItemClickListener(new OnMenuItemClickListener() {

        @Override
        public boolean onMenuItemClick(MenuItem item1) {
            new AlertDialog.Builder(Formulario_ItemNota.this).setIcon(android.R.drawable.ic_dialog_alert).setTitle("Deletar").setMessage("Deseja mesmo deletar ?")
                    .setPositiveButton("Sim", new DialogInterface.OnClickListener() {

                        public void onClick(DialogInterface dialog, int which) {
                            Stara_DB ItemNotaDao = new Stara_DB(Formulario_ItemNota.this);
                            ItemNotaDao.deletar(itemnotaSelecionado);
                            ItemNotaDao.close();
                            carregaListaItemNota();
                        }
                    }).setNegativeButton("Não", null).show();
            return true;
        }
    });
}

public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.itemnotamenu, menu);
    return true;
}

public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {
    case R.id.addItem:
        ItemNota itemnota = itemnota_helper.pegaItemNotaDoFormulario();

        Stara_DB ItemNotaDao = new Stara_DB(Formulario_ItemNota.this);
        itemnotas = ItemNotaDao.getListaIN();
        ItemNotaDao.insereItemNota(itemnota);
        Toast.makeText(Formulario_ItemNota.this, "Dados Salvos com sucesso", Toast.LENGTH_LONG).show();
        carregaListaItemNota();
        ItemNotaDao.close();
        return true;

    case R.id.CriarOrdem:
        Intent intentl = new Intent(Formulario_ItemNota.this, Formulario_OS.class);
        startActivity(intentl);
        return true;

    default:

        return super.onOptionsItemSelected(item);
    }
}

}

这是我的3个ListView之一,只有不同的值相同;

public class ListaMateriais extends Activity {

    private ListView listamateriais;
    ArrayAdapter<String> adapMatchMaterial;
    EditText inputSearch;
    public EditText ETclient; 
    ArrayList<HashMap<String, String>> productList;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.list_material_match);

        String products[] = { "Parafuso 3x4 092387",
                          "Cabeçote redpo 09873", 
                          "alavanca de ignição 027625",
                          "Pistão de arranque 093298092", 
                          "Eixo dianteiro 0343232",
                          "Cabeçote parafuseta 093232" };
        listamateriais = (ListView) findViewById(R.id.list_match_material);
        adapMatchMaterial = new ArrayAdapter<String>(this, R.layout.list_item, R.id.product_name, products);
        listamateriais.setAdapter(adapMatchMaterial);

        listamateriais.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> arg0, View v, int position,  long arg3) {
                String text= (String) arg0.getItemAtPosition(position);
                Bundle bundle = new Bundle();
                bundle.putString("TextMateriais", text);
                Intent int_material = new Intent(ListaMateriais.this,Formulario_ItemNota.class);
                int_material.putExtras(bundle);
                startActivity(int_material);
                finish();
            }
        });

        inputSearch = (EditText) findViewById(R.id.materialSearch); 
        inputSearch.addTextChangedListener(new TextWatcher() {
            public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
                ListaMateriais.this.adapMatchMaterial.getFilter().filter(cs);
            }
            public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
            }
            public void afterTextChanged(Editable arg0) {
            }
        });
    }

任何帮助都会真正体会!!! O

1 个答案:

答案 0 :(得分:2)

从列表中选择一个项目后,您将打开另一个Formulario_ItemNota实例。这就是你丢失editText数据的原因。

试试这个:

 public class Formulario_ItemNota extends Formulario_Nota {
    private ListView listaProblemas;
    private ItemNota_Helper itemnota_helper;
    private List<ItemNota> itemnotas;
    private ItemNota itemnotaSelecionado;
    private Intent int_conjunto;
    private Intent int_problema;

    private EditText ETconjunto;
    private EditText ETproblema;
    private EditText ETprocedencia;

    protected void onCreate(Bundle savedInstanceState) {
        System.out.println("Daniel: onCreate" + new Date());

        super.onCreate(savedInstanceState);
        setContentView(R.layout.form_itemnota);

        this.itemnota_helper = new ItemNota_Helper(this);

        ETconjunto = (EditText) findViewById(R.id.ET_conjunto);
        ETconjunto.setOnClickListener(new OnClickListener() {
            public void onClick(View view) {
                Intent material = new Intent(Formulario_ItemNota.this, ListaMateriais.class);
                startActivityForResult(material, 1);
            }
        });

        ETproblema = (EditText) findViewById(R.id.ET_problemas);
        ETproblema.setOnClickListener(new OnClickListener() {
            public void onClick(View view) {
                Intent problema = new Intent(Formulario_ItemNota.this, ListaProblemas.class);
                startActivityForResult(problema , 2);
            }
        });

        ETprocedencia = (EditText) findViewById(R.id.ET_procedencia);
        ETprocedencia.setOnClickListener(new OnClickListener() {
            public void onClick(View view) {
                Intent procedencia = new Intent(Formulario_ItemNota.this, ListaProcedencia.class);
                startActivityForResult(procedencia , 3);
            }
        });

        Stara_DB ItemNotaDao = new Stara_DB(Formulario_ItemNota.this);
        itemnotas = ItemNotaDao.getListaIN();
        ItemNotaDao.close();

        ArrayAdapter<ItemNota> adapter = new ArrayAdapter<ItemNota>(this, android.R.layout.simple_list_item_1, itemnotas);
        listaProblemas = (ListView) findViewById(R.id.lista_descr_problemas);
        listaProblemas.setAdapter(adapter);
        registerForContextMenu(listaProblemas);

    }

   @Override
   protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == 1) {// back from ListaMateriais.class
        if(resultCode == RESULT_OK){
            String resultFromMateriais=data.getStringExtra("TextMateriais");
            ETconjunto.setText(resultFromMateriais);
        }
    } else if (requestCode == 2) { // back from ListaProblemas.class
        if(resultCode == RESULT_OK){
            String resultFromProblemas=data.getStringExtra("TextProblemas");
            ETproblema.setText(resultFromProblemas);
        }
    } else if (requestCode == 3) { // back from  ListaProcedencia.class
        if(resultCode == RESULT_OK){
            String resultFromProcedencia=data.getStringExtra("TextProcedencia");
            ETprocedencia.setText(resultFromProcedencia);
        }
    }
  }

    private void carregaListaItemNota() {
        Stara_DB ItemNotaDao = new Stara_DB(Formulario_ItemNota.this);
        List<ItemNota> itensnotas = ItemNotaDao.getListaIN();
        ItemNotaDao.close();

        ArrayAdapter<ItemNota> adapter = new ArrayAdapter<ItemNota>(this, android.R.layout.simple_list_item_1, itensnotas);
        this.listaProblemas.setAdapter(adapter);
    }

    public void onCreateContextMenu(ContextMenu menuItem, View vItem, ContextMenuInfo menuInfoItem) {

        super.onCreateContextMenu(menuItem, vItem, menuInfoItem);
        listaProblemas = (ListView) findViewById(R.id.lista_descr_problemas);
        MenuItem editar = menuItem.add("Editar");
        editar.setOnMenuItemClickListener(new OnMenuItemClickListener() {
            public boolean onMenuItemClick(MenuItem item) {
                return true;
            }
        });

        MenuItem deletar = menuItem.add("Deletar");
        deletar.setOnMenuItemClickListener(new OnMenuItemClickListener() {

            @Override
            public boolean onMenuItemClick(MenuItem item1) {
                new AlertDialog.Builder(Formulario_ItemNota.this).setIcon(android.R.drawable.ic_dialog_alert).setTitle("Deletar").setMessage("Deseja mesmo deletar ?")
                        .setPositiveButton("Sim", new DialogInterface.OnClickListener() {

                            public void onClick(DialogInterface dialog, int which) {
                                Stara_DB ItemNotaDao = new Stara_DB(Formulario_ItemNota.this);
                                ItemNotaDao.deletar(itemnotaSelecionado);
                                ItemNotaDao.close();
                                carregaListaItemNota();
                            }
                        }).setNegativeButton("Não", null).show();
                return true;
            }
        });
    }

    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.itemnotamenu, menu);
        return true;
    }

    public boolean onOptionsItemSelected(MenuItem item) {

        switch (item.getItemId()) {
        case R.id.addItem:
            ItemNota itemnota = itemnota_helper.pegaItemNotaDoFormulario();

            Stara_DB ItemNotaDao = new Stara_DB(Formulario_ItemNota.this);
            itemnotas = ItemNotaDao.getListaIN();
            ItemNotaDao.insereItemNota(itemnota);
            Toast.makeText(Formulario_ItemNota.this, "Dados Salvos com sucesso", Toast.LENGTH_LONG).show();
            carregaListaItemNota();
            ItemNotaDao.close();
            return true;

        case R.id.CriarOrdem:
            Intent intentl = new Intent(Formulario_ItemNota.this, Formulario_OS.class);
            startActivity(intentl);
            return true;

        default:

            return super.onOptionsItemSelected(item);
        }
    }
}

在你的3个ListActivities中,你必须改变它们:

listamateriais.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> arg0, View v, int position,  long arg3) {
                String text= (String) arg0.getItemAtPosition(position);

                Intent returnIntent = new Intent();
                returnIntent.putExtra("result",result);
                setResult(RESULT_OK, returnIntent);
                finish();
            }
        });