I've got an EditText that is SLOW to respond when typing. The lag is annoying enough to cause me to find a solution. I did some research and found an SO thread EditText lagging when typing text and it suggests to move the code to it's own thread. I did that but I'm still experiencing the lag.
EDIT
After seeing the comments below (thanks dreamtale), I know the new thread isn't necessary. But putting the code back in the onTextChanged or afterTextChanged event still causes the slow response. I've modified the code to reflect the latest changes:
xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight="1" >
<LinearLayout android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:layout_marginLeft="2dp"
android:layout_marginRight="2dp" >
<include
android:layout_width="match_parent"
android:layout_height="match_parent"
layout="@layout/right_layout_header" />
</LinearLayout>
<ScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_marginRight="5dp"
android:layout_marginBottom="5dp">
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:shrinkColumns="1"
android:drawable="@drawable/light_bg" >
<TableRow
android:layout_width="200dp"
android:layout_height="wrap_content"
android:shrinkColumns="1">
<TextView
android:id="@+id/tvSummaryBold"
android:layout_width="wrap_content"
android:textStyle="bold"
android:gravity="left"
android:text="@string/Summary"
style="@style/IssueDetailsLabelTextView" />
</TableRow>
<TableRow
android:layout_width="200dp"
android:layout_height="wrap_content"
android:shrinkColumns="1">
<EditText
android:id="@+id/txtSummary"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:hint="@string/SummaryDefaultText"
android:maxLength="255"
android:singleLine="true"
android:layout_weight="1"
/>
</TableRow>
<TableRow>
<TextView
android:id="@+id/tvCharactersRemaining"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/Gray"
android:paddingLeft="5dp"
/>
</TableRow>
</TableLayout>
</ScrollView>
</LinearLayout>
Here's the code for the fragment:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
try
{
vView = inflater.inflate(R.layout.submit_issue, container, false);
//Setup initial "characters remaining" text.
mCharsRemaining = (TextView)vView.findViewById(R.id.tvCharactersRemaining);
mCharsRemaining.setText(String.valueOf(iMaxChars) + ' ' + getString(R.string.CharsRemaining));
//Event for counting the characters remaining.
mSummaryEditText.addTextChangedListener(TextEditorWatcher);
new LoadPOCsTask().execute();
}
catch (Exception e)
{
Errors.LogError(e);
}
return vView;
}
The TextEditorWatcher event:
private final TextWatcher TextEditorWatcher = new TextWatcher() {
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
public void onTextChanged(CharSequence s, int start, int before, int count) {
int iMaxCharsRemaining = (iMaxChars - s.length());
mCharsRemaining.setText("Static Text "); //Intentionally put static text to see if problem still occurs, and yes it does.
}
public void afterTextChanged(Editable s) {
}
};
I can't figure out why it's still lagging when typing. If I remove the addTextChangeListener
event, then it works fine. Ideas?