2015-10-11 55 views
0

你好我試圖做編輯的文字列表視圖,用戶可以輸入他想要的不過我的代碼一直editboxes之間跳躍後,我加入的第一個字符的數字是有沒有辦法制止?我試圖去除焦點並刪除addTextWatcher。但是,當我刪除addtextwatcher non的文本被記錄。請讓我知道,如果你需要更多的信息,因爲這種新的Android類型的生活。這裏是我的適配器代碼: public CreateWKOAdapter(Context context,ArrayList items,ListView listview) inflater = LayoutInflater.from(context); this.mContext = context; this.items =商品; this.listview = listview; }編輯文本不能正常工作的android

@Override 
public int getCount() 
{ 
    return items.size(); 
} 

@Override 
public CreateWKOItem getItem(int position) 
{ 
    return items.get(position); 
} 

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

@Override 
public View getView(int position, View convertView, ViewGroup parent) 
{ 
    ViewHolder holder = null; 
    if (convertView == null) 
    { 
     holder = new ViewHolder(); 

     convertView = inflater.inflate(R.layout.create_wko_layout_item, null); 
     holder.name_text_view = (TextView) convertView.findViewById(R.id.text_name); 
     holder.header = convertView.findViewById(R.id.relativeLayout1); 
     holder.input = convertView.findViewById(R.id.oclick_layout); 
     holder.image_view = (ImageView) convertView.findViewById(R.id.foto_createwko); 
     holder.sets_edit_text = (CustomEditText) convertView.findViewById(R.id.sets_edit_text); 
     holder.reps_edit_text = (CustomEditText) convertView.findViewById(R.id.rep_edit_text); 
     holder.checkbox = (ImageView) convertView.findViewById(R.id.image_chk); 

     holder.header.setTag(holder.input); 

     convertView.setTag(holder); 
    } 
    else 
    { 
     holder = (ViewHolder) convertView.getTag(); 

    } 


    if (visibleindex == position) 
    { 
     holder.input.setVisibility(View.VISIBLE); 
     if(holder.sets_edit_text != null) 
     { 
      final EditText clone = holder.sets_edit_text; 
      holder.sets_edit_text.postDelayed(new Runnable() 
      { 
       @Override 
       public void run() 
       { 
        clone.requestFocus(); 
        Log.i("su", "Request focus"); 
       } 
      }, 300); 
     } 
    } 
    else 
    { 
     holder.input.setVisibility(View.GONE); 
    } 

    CreateWKOItem item = getItem(position); 

    if(item.isShouldShowCheckBox()) 
    { 
     holder.checkbox.setVisibility(View.VISIBLE); 
    } 
    else 
    { 
     holder.checkbox.setVisibility(View.GONE); 
    } 
    String image_drawable_str = item.getName().toLowerCase().replace(" ", "_"); 
    Drawable drawable = getImageFromDrawableByString(image_drawable_str); 
    if (drawable != null) 
    { 
     holder.image_view.setImageDrawable(drawable); 
    } 
    else 
    { 
     holder.image_view.setImageResource(R.drawable.bg_count); 
    } 

    holder.sets_edit_text.removeTextWatcher(); 
    holder.reps_edit_text.removeTextWatcher(); 

    holder.name_text_view.setText(item.getName()); 
    holder.sets_edit_text.setHint("" + item.getSets()); 
    holder.reps_edit_text.setHint("" + item.getReps()); 

    holder.header.setTag(holder.input); 
    holder.header.setTag(R.id.tag_id, position); 
    holder.header.setTag(R.id.view_id, holder.reps_edit_text); 

    holder.sets_edit_text.setTag(item); 
    holder.reps_edit_text.setTag(item); 

    holder.sets_edit_text.addTextWatcher(); 
    holder.reps_edit_text.addTextWatcher(); 

    holder.header.setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View v) 
     { 
      final EditText editText = (EditText) v.getTag(R.id.view_id); 

      final int a = (int) v.getTag(R.id.tag_id); 
      visibleindex = a; 

      View input = (View) v.getTag(); 
      if (input.getVisibility() == View.VISIBLE) 
      { 
       input.setVisibility(View.GONE); 
       visibleindex = -1; 
      } 
      else 
      { 
       //input.setVisibility(View.VISIBLE); 

      } 
      notifyDataSetChanged(); 

     } 
    }); 

    holder.sets_edit_text.setiOnTextChanged(new CustomEditText.IOnTextChanged() 
    { 
     @Override 
     public void onTextChanged(View v, String newText) 
     { 
      CreateWKOItem it = (CreateWKOItem) v.getTag(); 
      int value = 0; 
      try 
      { 
       String str = newText.toString(); 
       Log.i("su", "Sets text change to: " + str); 
       if (str.length() > 0) 
        value = Integer.parseInt(str); 
      } 
      catch (Exception ex) 
      { 
       ex.printStackTrace(); 
      } 
      if (it != null) 
      { 
       it.setSets(value); 
       Log.i("su", "Current item set sets to: " + value); 
      } 
      notifyDataSetChanged(); 
     } 
    }); 

    holder.reps_edit_text.setiOnTextChanged(new CustomEditText.IOnTextChanged() 
    { 
     @Override 
     public void onTextChanged(View v, String newText) 
     { 
      CreateWKOItem it = (CreateWKOItem) v.getTag(); 
      int value = 0; 
      try 
      { 
       String str = newText.toString(); 
       Log.i("su", "Reps text change to: " + str); 
       if (str.length() > 0) 
        value = Integer.parseInt(str); 
      } 
      catch (Exception ex) 
      { 
       ex.printStackTrace(); 
      } 
      if (it != null) 
      { 
       it.setReps(value); 
       Log.i("su", "Current item set reps to: " + value); 
      } 
      notifyDataSetChanged(); 
     } 
    }); 
    return convertView; 

} 

感謝

回答

0

我有什麼做的是註釋掉notifyDataSetChanged();但只限於設定的代表。

0

簡單的解決方案:讓你的文本框聽衆,並保留括號爲空。也許它是Android?你可能正在看一個bug。

+0

保持文本框監聽器的含義是什麼?謝謝 – pudm

+0

'addTextWatcher()'。只需將方法在括號內留空即可。 –

相關問題