2014-08-30 41 views
0

我遇到了在editText中的文本的最后一个值已经不在焦点时出现问题的问题。当我输入一个值第一次,当它没有在焦点我得到我输入的最后一个值,但第二次,等等,每当我改变内置editText内的iputed值,当它不是焦点时,它应该得到我输入的值,但它是改变到我输入的最后一个值,但是当保存到数据库时,它节省了我真正输入的价值。我知道这很难理解我在这里说什么,但我希望你能帮助我..这里是我的代码在editext中输入的值正在改变为当光标未对焦时输入的最后一个值

package com.functions; 

import java.util.ArrayList; 
import java.util.List; 

import com.example.senditem.R; 

import android.app.Activity; 
import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.view.inputmethod.InputMethodManager; 
import android.widget.ArrayAdapter; 
import android.widget.EditText; 
import android.widget.Spinner; 
import android.widget.TextView; 

public class MyAdapter extends ArrayAdapter<Model> { 


private final List<Model> list; 


String adapter; 
    private final Activity context; 
    private final int id; 
    int listPosition; 
    public MyAdapter(Activity context, List<Model> list, int id){ 
     super(context, R.layout.userproduct, list); 
     this.context = context; 
     this.list = list; 
     this.id = id; 
    } 
    class ViewHolder{ 
     protected TextView text; 
     EditText quantity; 
     protected TextView amount; 
     TextView ext; 
     Spinner uom; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent){ 
     listPosition = position; 
     ViewHolder viewHolder = null; 
     if(convertView == null){ 
      LayoutInflater inflator = context.getLayoutInflater(); 
      convertView = inflator.inflate(R.layout.userproduct, null); 
      viewHolder = new ViewHolder(); 
      viewHolder.text = (TextView) convertView.findViewById(R.id.label); 
      viewHolder.text.setFocusable(true); 
      viewHolder.quantity = (EditText) convertView.findViewById(R.id.inputQty); 
      viewHolder.amount = (TextView) convertView.findViewById(R.id.inputAmt); 
      viewHolder.uom = (Spinner) convertView.findViewById(R.id.inputUom); 
      viewHolder.ext = (TextView) convertView.findViewById(R.id.inputTamt); 
      convertView.setTag(viewHolder); 
      convertView.setTag(R.id.label, viewHolder.text); 
      convertView.setTag(R.id.inputQty, viewHolder.quantity); 
      convertView.setTag(R.id.inputAmt, viewHolder.amount); 
      convertView.setTag(R.id.inputTamt, viewHolder.ext); 
      convertView.setTag(R.id.inputUom, viewHolder.uom); 
     } 
     else{ 
      viewHolder = (ViewHolder) convertView.getTag(); 
     } 
     SqliteHelper db = new SqliteHelper(context); 
     viewHolder.text.setText(list.get(position).getName()); 
     viewHolder.quantity.setId(position); 
     viewHolder.amount.setText(String.valueOf(list.get(position).getAmt())); 
     viewHolder.amount.setId(position); 
     viewHolder.ext.setId(position);  
     viewHolder.uom.setId(position); 
     viewHolder.text.setId(position); 
     String data = db.getAllDetails(id, list.get(position).getitemId()); 
     String data2 = db.getExt(id,list.get(position).getitemId()); 
     if(data==null) 
     { 
      viewHolder.quantity.setText(list.get(position).quantity);  
     } 
     else{ 
      viewHolder.quantity.setText(data); 
     } 
     if(data2==null) 
     { 
      viewHolder.ext.setText(String.valueOf(list.get(position).ext)); 
     } 
     else{ 
      viewHolder.ext.setText(data2); 
     } 
     viewHolder.quantity.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
       public void onFocusChange(View v, boolean hasFocus) { 
        if (!hasFocus){ 
         final int position = v.getId(); 
         final EditText Caption = (EditText) v; 
         list.get(position).quantity = Caption.getText().toString();    

        } 
       } 
      }); 

     viewHolder.ext.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
      public void onFocusChange(View v, boolean hasFocus) { 
       if (!hasFocus){ 
         final int position = v.getId(); 
         final TextView Caption = (TextView) v;  


       list.get(position).ext = (float) Integer.parseInt((Caption.getText().toString())); 



       } 
      } 
     }); 

     List<Model> uomlist = (List<Model>) 

db.selectUom(list.get(position).getitemId()); 

     List<String> myuom = new ArrayList<String>(); 
     for(int j=0;j<uomlist.size();j++){ 
      myuom.add(uomlist.get(j).getUom()); 
     } 




ArrayAdapter<String> uomadapter = new ArrayAdapter<String>(getContext(),android.R.layout.simple_spinner_item,myuom); 
    uomadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    viewHolder.uom.setAdapter(uomadapter); 

    return convertView; 



    } 





} 

回答

0

试试这种方式,希望这会帮助你解决你的问题。

public class MyAdapter extends ArrayAdapter<Model> { 

    private final List<Model> list; 


    String adapter; 
    private final Activity context; 
    private final int id; 
    int listPosition; 
    public MyAdapter(Activity context, List<Model> list, int id){ 
     super(context, R.layout.userproduct, list); 
     this.context = context; 
     this.list = list; 
     this.id = id; 
    } 


    class ViewHolder{ 
     protected TextView text; 
     EditText quantity; 
     protected TextView amount; 
     TextView ext; 
     Spinner uom; 
    } 

    @Override 
    public View getView(final int position, View convertView, ViewGroup parent){ 
     listPosition = position; 
     ViewHolder viewHolder = null; 
     if(convertView == null){ 
      LayoutInflater inflator = context.getLayoutInflater(); 
      convertView = inflator.inflate(R.layout.userproduct, null); 
      viewHolder = new ViewHolder(); 
      viewHolder.text = (TextView) convertView.findViewById(R.id.label); 
      viewHolder.text.setFocusable(true); 
      viewHolder.quantity = (EditText) convertView.findViewById(R.id.inputQty); 
      viewHolder.amount = (TextView) convertView.findViewById(R.id.inputAmt); 
      viewHolder.uom = (Spinner) convertView.findViewById(R.id.inputUom); 
      viewHolder.ext = (TextView) convertView.findViewById(R.id.inputTamt); 
      convertView.setTag(viewHolder); 
     } 
     else{ 
      viewHolder = (ViewHolder) convertView.getTag(); 
     } 
     SqliteHelper db = new SqliteHelper(context); 
     viewHolder.text.setText(list.get(position).getName()); 
     viewHolder.quantity.setId(position); 
     viewHolder.amount.setText(String.valueOf(list.get(position).getAmt())); 
     viewHolder.amount.setId(position); 
     viewHolder.ext.setId(position); 
     viewHolder.uom.setId(position); 
     viewHolder.text.setId(position); 
     String data = db.getAllDetails(id, list.get(position).getitemId()); 
     String data2 = db.getExt(id,list.get(position).getitemId()); 

     if(data==null) 
     { 
      viewHolder.quantity.setText(list.get(position).quantity); 
     } 
     else{ 
      viewHolder.quantity.setText(data); 
     } 
     if(data2==null) 
     { 
      viewHolder.ext.setText(String.valueOf(list.get(position).ext)); 
     } 
     else{ 
      viewHolder.ext.setText(data2); 
     } 
     viewHolder.quantity.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
      public void onFocusChange(View v, boolean hasFocus) { 
       if (!hasFocus){ 
        list.get(position).quantity = ((EditText) v).getText().toString(); 

       } 
      } 
     }); 

     viewHolder.ext.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
      public void onFocusChange(View v, boolean hasFocus) { 
       if (!hasFocus){ 
        list.get(position).ext = (float) Integer.parseInt((((TextView) v).getText().toString())); 

       } 
      } 
     }); 

     List<Model> uomlist = (List<Model>) db.selectUom(list.get(position).getitemId()); 
     List<String> myuom = new ArrayList<String>(); 
     for(int j=0;j<uomlist.size();j++){ 
      myuom.add(uomlist.get(j).getUom()); 
     } 


     ArrayAdapter<String> uomadapter = new ArrayAdapter<String>(getContext(),android.R.layout.simple_spinner_item,myuom); 
     uomadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     viewHolder.uom.setAdapter(uomadapter); 

     return convertView; 

    } 
} 
+0

它仍然没有工作 – phoenix 2014-08-30 05:36:42

相关问题