我有一个EditText通过
填充df['good']= np.where(df['fruit'].isin(good), 'good', 'not good')
print (df)
fruit bites good
0 Apple 1 good
1 Banana 2 not good
2 Clementine 3 good
3 Dragon fruit 1 not good
4 Elderberry 2 not good
5 Figs 3 good
6 Grapes 4 good
这是EditText而不是TextView的原因是因为我也想在其中粘贴内容(稍后在用户操作应用时),或者在适用时手动键入内容。
但是我必须
editText.setText(content)
设置了editText,请重置标志 如何区分EditText的填充方式? setText()
的回调在每种情况下都会触发。
答案 0 :(得分:0)
您可以设置监听器类:
public interface GoEditTextListener {
void onUpdate();
}
自定义Edittext
public class GoEditText extends EditText
{
ArrayList<GoEditTextListener> listeners;
public GoEditText(Context context)
{
super(context);
listeners = new ArrayList<>();
}
public GoEditText(Context context, AttributeSet attrs)
{
super(context, attrs);
listeners = new ArrayList<>();
}
public GoEditText(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
listeners = new ArrayList<>();
}
public void addListener(GoEditTextListener listener) {
try {
listeners.add(listener);
} catch (NullPointerException e) {
e.printStackTrace();
}
}
/**
* Here you can catch paste, copy and cut events
*/
@Override
public boolean onTextContextMenuItem(int id) {
boolean consumed = super.onTextContextMenuItem(id);
switch (id){
case android.R.id.cut:
onTextCut();
break;
case android.R.id.paste:
onTextPaste();
break;
case android.R.id.copy:
onTextCopy();
}
return consumed;
}
public void onTextCut(){
}
public void onTextCopy(){
}
/**
* adding listener for Paste for example
*/
public void onTextPaste(){
for (GoEditTextListener listener : listeners) {
listener.onUpdate();
}
}
}
xml
<com.yourname.project.GoEditText
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/editText1"/>
代码
private GoEditText editText1;
editText1 = (GoEditText) findViewById(R.id.editText1);
editText1.addListener(new GoEditTextListener() {
@Override
public void onUpdate() {
//here do what you want when text Pasted
}
});
答案 1 :(得分:0)
仅扩展EditText
,包括标志,并覆盖setText
:
public class MyEditText extends EditText {
boolean fromSetText;
@Override
public void setText(String text) {
super.setText(text);
fromSetText = true;
}
}
您可以根据自己的要求定义自己的设置器/获取器和构造器。