2013-01-25 27 views
0

我在我的活動中有Gridview。我的GridView的數據適配器:如何在網格視圖中清除編輯框

private class EfficientAdapter extends BaseAdapter { 
     ... 
     public View getView(int position, View convertView, ViewGroup parent) { 
      final ViewHolder holder; 
      if (convertView == null) { 
       convertView = mInflater.inflate(R.layout.item3, null); 
       holder = new ViewHolder(); 
       holder.Attitude_Value = (EditText) convertView.findViewById(R.id.editText1); 
       holder.Attitude_Value.addTextChangedListener(new TextWatcher() 
        { 
         public void afterTextChanged(Editable edt) 
         {attitude_values.set(holder.ref, edt.toString());} 

      public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3){} 
      public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {}}); 
       convertView.setTag(holder); 
      } else { 
       holder = (ViewHolder) convertView.getTag(); 
      } 
      holder.ref=position; 
      holder.Attitude_Value.setText(attitude_values.get(position)); 
      return convertView; 
     } 
    ... 

我怎樣才能在網格視圖清晰編輯框,當我專注在它之前,開始打字?

回答

0
String value = "anyValue"; 

final EditText et = (EditText) findViewById(R.id.edtText); 
et.setText(value); 
et.setOnTouchListener(new OnTouchListener() { 
    @Override 
    public boolean onTouch(View view, MotionEvent event) { 
     if (event.getAction() != MotionEvent.ACTION_UP) { 
      et.setText(et.getText().toString.trim()); 
      return false; 
     } 

     if (event.getAction() != MotionEvent.ACTION_DOWN) { 
      value = et.getText().toString.trim(); 
      et.setText(""); 
      return true; 
     } 
     return false; 
    } 
}); 

et.addTextChangedListener(new TextWatcher() { 
    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
    } 

    @Override 
    public void afterTextChanged(Editable arg0) { 
    } 

    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
    } 
}); 
+0

我嘗試,但實際上我不明白該怎麼做。我們無法從TextWatcher()中看到持有者? – Ivan

+0

@Ivan Onishchenko現在試試這個代碼。在'OnTouchListener'中,當你得到事件動作'ACTION_DOWN'時,獲取當前值並清除'EditText',並且如果用戶不能編輯當前值並放鬆焦點,只需將該值設置回去,否則設置新文本。 – 2013-01-25 07:23:30

+0

謝謝!它在我觸摸時起作用,但是當我按下輸入時,按桌子結束移動。你能爲此建議方法嗎? 我添加了et.RequestFocus(),導致單元格沒有關注 – Ivan

0

你嘗試這樣的方式我不是很確定更改XML EDITTEXT

android:hint="Something" 

嘗試此鏈接example

et.addTextChangedListener(new TextWatcher() { 
    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
     et.setCompoundDrawables(null, null, et.getText().toString().equals("") ? null : x, null); 
    } 

    @Override 
    public void afterTextChanged(Editable arg0) { 
    } 

    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
    } 
}); 
+0

我怎麼看舊數據如果要做暗示? – Ivan

+0

@IvanOnishchenko舊數據的含義? – Janmejoy

+0

@IvanOnishchenko檢查上面的鏈接希望它可以幫助您 – Janmejoy