2016-03-23 2 views
0

In meiner Listenansicht habe ich Edittext und einige textviews. Wenn ich versuche über listview zu iterieren, um edittext Werte zu erhalten, habe ich einige Probleme.Ich möchte nur Aktionen ausführen, wenn meine edittext in der listview nicht leer ist. Ansonsten möchte ich die Iteration fortsetzen. Ich brauche nur nicht leere Werte von edittexts, wenn ich durch listview iteriere. mein listview Name ist "Liste" hier. mein CodeText in Listenansicht bearbeiten leer oder nicht

if (list != null) { 
      for (int i = 0; i < list.getChildCount(); i++) { 
       ed2 = (EditText) list.getChildAt(i).findViewById(R.id.pcs); 
       if (ed2.getText().toString().trim().length() != 0) { 
        TextView im_codetext = (TextView) vie.findViewById(R.id.code); 
        imcode = im_codetext.getText().toString(); 
        try { 
         DatabaseHelper dbHelper = new DatabaseHelper(this.getApplicationContext()); 
         newDB = dbHelper.getWritableDatabase(); 
         Cursor cr = newDB.rawQuery("select distinct im_srp_pc, im_subgroup_code from itemmaster where im_code =" + imcode, null); 

         while (cr.moveToNext()) { 
          srppc = cr.getString(cr.getColumnIndex("im_srp_pc")); 
          String subcode = cr.getString(cr.getColumnIndex("im_subgroup_code")); 
          databas.put("subgp", subcode); 
         } 
         srps = Float.valueOf(srpval); 
         qtys = Integer.valueOf(ed2.getText().toString()); 

        } catch (NumberFormatException e) { 
         srps = 0; 
        } 
        float amnts = srps * qtys; 
        sumnet = sumnet + amnts; 
        else{ 
         Log.v(" empty", " empty"); 
        } 

       } 
      } 
     } 

Meine Adapterklasse ist

public class MyListAdapter extends BaseAdapter{ 

     @Override 
     public int getCount() { 
      // TODO Auto-generated method stub 
      if(datas != null && datas.size() != 0){ 
       return datas.size();  
      } 
      return 0; 
     } 

     @Override 
     public Object getItem(int position) { 
      // TODO Auto-generated method stub 
      return datas.get(position); 
     } 

     @Override 
     public long getItemId(int position) { 
      // TODO Auto-generated method stub 
      return position; 
     } 

     @Override 
     public View getView(final int position, View convertView, ViewGroup parent) { 

      //ViewHolder holder = null; 
      final ViewHolder holder; 
      if (convertView == null) { 

       holder = new ViewHolder(); 
       LayoutInflater inflater = Orders.this.getLayoutInflater(); 
       convertView = inflater.inflate(R.layout.order_simple_row, null); 
       holder.textView1 = (TextView) convertView.findViewById(R.id.name); 
       holder.textView2 = (TextView) convertView.findViewById(R.id.srp); 
       holder.textview3 = (TextView) convertView.findViewById(R.id.code); 
            holder.editText2 = (EditText) convertView.findViewById(R.id.pcs); 

       convertView.setTag(holder); 

      } else { 

       holder = (ViewHolder) convertView.getTag(); 
      } 
      holder.ref = position; 
      String [] names = new String[550]; 
      String [] codes = new String[550]; 
      String [] prize = new String[550]; 

       DatabaseHelper dbHelper = new DatabaseHelper(Orders.this.getApplicationContext()); 
      newDB = dbHelper.getWritableDatabase(); 
      Cursor c = newDB.rawQuery("select distinct im_code ,im_desc ,im_srp " 
        + " from itemmaster", null); 

       c.moveToFirst(); 

       while (c.moveToNext()){ 

        Log.v("item detailss", c.toString()); 
       String cod = c.getString(c.getColumnIndex("im_code")); 
      codes[c.getPosition()] =cod; 
       String desc1 = c.getString(c.getColumnIndex("im_desc")); 
       names[c.getPosition()] = desc1; 

       String price = c.getString(c.getColumnIndex("im_srp")); 
       prize[c.getPosition()] = price; 
           } 

       holder.textView1.setText(names[position+1]); 
       holder.textview3.setText(codes[position+1]); 
        holder.textView2.setText(prize[position+1]); 



      holder.editText2.setText(arrTemp[position]); 

      holder.editText2.addTextChangedListener(new TextWatcher() { 

       @Override 
       public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { 
        // TODO Auto-generated method stub 

       } 

       @Override 
       public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, 
         int arg3) { 
        // TODO Auto-generated method stub 
        // arrTemp[holder.ref] = arg0.toString(); 
       } 

       @Override 
       public void afterTextChanged(Editable arg0) { 
        // TODO Auto-generated method stub 
        arrTemp[holder.ref] = arg0.toString(); 

       } 
      }); 

      return convertView; 


    } 
     private class ViewHolder { 

      public Object list; 
      TextView textView1,textView2,textview3; 
     EditText editText1,editText2; 
      int ref; 
      } 
    } 

bitte help.thanks im Voraus.

+0

bitte Ihre Adapterklasse veröffentlichen ... – Ancee

+0

@Ancee Ich habe gerade gebucht meine Adapterklasse .please einen Blick – ellie

+0

was Sie wollen? check alle edittext sind leer oder nicht? –

Antwort

0

Ich habe eine Lösung.

Deklarieren Sie eine HashMap in Ihrer benutzerdefinierten Adapterklasse.

public class CustomAdapter extends BaseAdapter{ 

    public HashMap<Integer,String> textMap = new HashMap<Integer,String>(); 
    .... 

In GetView() -Methode Text von HasMap abrufen und in EditText festlegen.

@Override 

public View getView(final int position, View convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 
    final Holder holder=new Holder(); 
    View rowView; 
    rowView = inflater.inflate(R.layout.list_item, null); 

    holder.editText = (EditText)rowView.findViewById(R.id.editText); 

    holder.editText.setText(textMap.get(position)); 
    .... 

Und in TextChangeListner Text in HashMap von Position hinzufügen.

holder.editText.addTextChangedListener(new TextWatcher() { 

      @Override 
      public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, 
              int arg3) { 
       // TODO Auto-generated method stub 
       // arrTemp[holder.ref] = arg0.toString(); 
      } 

      @Override 
      public void afterTextChanged(Editable arg0) { 
       // TODO Auto-generated method stub 

       textMap.put(position,holder.editText.getText().toString()); 

      } 
     }); 

Jetzt in Ihrer Aktivität können Sie HashMap des Adapters bekommen und seinen Wert nach Position erhalten. und wenn es keinen Text in einer bestimmten Position gibt, bedeutet das, dass edttext leer ist.

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     button = (Button)findViewById(R.id.button); 
     listView = (ListView)findViewById(R.id.listView); 
     final CustomAdapter customAdapter = new CustomAdapter(this,names); 
     listView.setAdapter(customAdapter); 


     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 



       for(int i=0;i<names.length;i++){ 


        Toast.makeText(MainActivity.this, customAdapter.textMap.get(i), Toast.LENGTH_SHORT).show(); 

       } 

      } 
     });