Что я хочу сделать: список с такими сообщениями:
< имя_пользователь > и вот mnessage, который пользователь пишет, который хорошо переносит на следующую строку. точно так же.
Что у меня:
ListView R.layout.list_item:
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/text_message"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="(Message Text)" />
Адаптер, который раздувает вышеприведенную компоновку и делает:
SpannableStringBuilder f = new SpannableStringBuilder(check.getContent());
f.append(username);
f.setSpan(new InternalURLSpan(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "Clicked User", Toast.LENGTH_SHORT).show();
}
}), f.length() - username.length(), f.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
f.append(" " + message);
messageTextView.setText(f);
messageTextView.setMovementMethod(LinkMovementMethod.getInstance());
meesageTextView.setFocusable(false);
Класс InternalURLSpan
public class InternalURLSpan extends ClickableSpan {
OnClickListener mListener;
public InternalURLSpan(OnClickListener listener) {
mListener = listener;
}
@Override
public void onClick(View widget) {
mListener.onClick(widget);
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);
}
}
В активности у меня есть onCreate(...)
:
listView.setOnItemClickListener(ProgramChecksActivity.this);
и реализации вышеперечисленного
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
Toast.makeText(context, "Clicked Item", Toast.LENGTH_SHORT).show();
}
Проблема:
Нажав на элемент, не показывайте тост. Только нажатие на имя пользователя показывает тост.
Я предполагаю, что setMovementMethod(LinkMovementMethod.getInstance());
делает TextView доступным. Таким образом, элементы сами никогда больше не нажимаются.
Как я могу снова сделать элементы повторно? Имея ту же функциональность, что и я.