如何获取自定义列表中的editext的所有值从android数据库中的数据库editext

如何获取自定义列表中的editext的所有值从android数据库中的数据库editext

问题描述:

我从MySQL数据库获取menunames,并追加到编辑自定义列表视图使用base adapter.now我更改editext值menunames一些。现在我想摆脱首先editext持续如何获取自定义列表中的editext的所有值从android数据库中的数据库editext

  Eg:x,y,z,.... are menunames coming from database it append editext(cusom listview) 
      i am change editext value y to b 
      now i want x,b,z...... values in arraylisst.. 

我的基adapger类

public class EditMainMenulistview extends BaseAdapter { 
    public final ArrayList<String> arr = new ArrayList<String>(); 
    protected static Context Context = null; 
    int i; 
    public String editnewmainmenu, menuname, edittext; 
    String qrimage; 
    Bitmap bmp, resizedbitmap; 
    Bitmap[] bmps; 
    Activity activity = null; 
    private LayoutInflater inflater; 

    private ImageView[] mImages; 
    String[] itemimage; 
    TextView[] tv; 
    String itemname, itemcode; 
    public String[] itemnames, itemcodes; 
    HashMap<String, String> map = new HashMap<String, String>(); 

    public EditMainMenulistview(Context context, JSONArray imageArrayJson) { 
     Context = context; 
     // inflater = 
     // (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     // imageLoader=new ImageLoader(activity); 
     inflater = LayoutInflater.from(context); 
     this.mImages = new ImageView[imageArrayJson.length()]; 
     this.bmps = new Bitmap[imageArrayJson.length()]; 
     this.itemnames = new String[imageArrayJson.length()]; 
     this.itemcodes = new String[imageArrayJson.length()]; 

     try { 

      for (i = 0; i < imageArrayJson.length(); i++) { 
       JSONObject image = imageArrayJson.getJSONObject(i); 
       qrimage = image.getString("menuimage"); 
       itemname = image.getString("menuname"); 
       itemcode = image.getString("menucode"); 
       itemnames[i] = itemname; 
       itemcodes[i] = itemcode; 

       byte[] qrimageBytes = Base64.decode(qrimage.getBytes()); 

       bmp = BitmapFactory.decodeByteArray(qrimageBytes, 0, 
         qrimageBytes.length); 
       int width = 100; 
       int height = 100; 
       resizedbitmap = Bitmap.createScaledBitmap(bmp, width, height, 
         true); 
       bmps[i] = bmp; 

       mImages[i] = new ImageView(context); 
       mImages[i].setImageBitmap(resizedbitmap); 

       mImages[i].setScaleType(ImageView.ScaleType.FIT_START); 

       // tv[i].setText(itemname); 
      } 
      System.out.println(itemnames[i]); 

     } catch (Exception e) { 
      // TODO: handle exception 
     } 
    } 

    public int getCount() { 
     return mImages.length; 
    } 

    public Object getItem(int position) { 
     return position; 
    } 

    public long getItemId(int position) { 
     return position; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     final ViewHolder holder; 

     if (convertView == null) { 
      holder = new ViewHolder(); 
      convertView = inflater.inflate(R.layout.editmainmenulist, null); 
      holder.caption = (EditText) convertView 
        .findViewById(R.id.editmaimenu); 
      holder.caption1 = (ImageView) convertView 
        .findViewById(R.id.menuimage); 
      convertView.setTag(holder); 
     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 
     // Fill EditText with the value you have in data source 
     holder.caption.setText(itemnames[position]);//i append menunames here 
     holder.caption.setId(position); 
     holder.caption1.setImageBitmap(bmps[position]); 

     // we need to update adapter once we finish with editing 
     arr.add(holder.caption.getText().toString());//here i am try to get all values change and without edit text values but it get only menunames values 

     return convertView; 
    } 
} 

class ViewHolder { 
    EditText caption; 
    ImageView caption1; 
} 

class ListItem { 
    String caption; 
} 

请帮我

我想你会需要使用OnTouchEditText得到它Id和在该EditText中添加TextWatcher以获取Editext。

这里是触摸监听器实例中的EditText

OnTouchListener mEdittextTouchListener = new OnTouchListener() { 

    @Override 
    public boolean onTouch(View v, MotionEvent event) { 

     int childPosition = v.getId; 
     Log.i("Log_tag", "Edittext Position is " + childPosition); 
        //Here you will get your EditText Position. 
     //saveData=true; 
     //setChildPosition(childPosition); 

     return false; 
    } 
}; 

现在实现了您的活动TextWatcher和getView添加修改你这样的BaseAdapter的。

holder.caption.removeTextChangedListener(ExpandableListPage.this); 
holder.caption.setOnTouchListener(mEdittextTouchListener); 
holder.caption.addTextChangedListener(ExpandableListPage.this); 

现在一定要先从EditText上删除TextWatcher,并添加它。因为当你的列表视图视图是要显示的EditText将调用TextWather方法,以防止这一点,我们总是需要删除它,然后添加它。

@Override 
public void afterTextChanged(Editable s) { 
    Log.v("Log_tag", "After TextChanged" + s.toString()); 


} 

@Override 
public void beforeTextChanged(CharSequence s, int start, int count, 
     int after) { 
    Log.i("Log_tag", "Before TextChanged" + s.toString()); 

} 

@Override 
public void onTextChanged(CharSequence s, int start, int before, int count) { 
    Log.e("Log_tag", "ontext Changed"+ s.toString()); 
    if(count!=0){ 
     if(saveData){ 
      //Add your EditText Change Value here 
          arr.add(s.toString()); 
      } 
     } 

    } 


} 
+0

我试过我们的代码,但我得到错误。请看我的代码添加你的代码让我再次发布 – Vinoth 2012-04-10 07:47:09

+0

当你想在EditText中编辑你需要在ListView中触摸那个EditText,如果需要的话我们可以得到Edittext是从onTouch和通过使用TextWatcher我们可以得到改变那EditText.now让我知道你在哪里得到问题。 – Herry 2012-04-10 08:21:46

+0

为什么你给saveData变量..请告诉我 – Vinoth 2012-04-10 09:24:12