Ce que je veux faire: Une liste avec des messages comme ceci:
<Nom d'utilisateur> et voici le mnessage l'utilisateur écrit, qui va envelopper joliment à la ligne suivante. exactement comme cela.
Ce que j'ai:
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)" />
Adaptateur qui gonfle la disposition ci-dessus et n':
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);
Le InternalURLSpan classe
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);
}
}
Dans l'activité que j'ai en onCreate(...)
:
listView.setOnItemClickListener(ProgramChecksActivity.this);
et la mise en œuvre de ce qui précède
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
Toast.makeText(context, "Clicked Item", Toast.LENGTH_SHORT).show();
}
Le problème:
En cliquant sur l'élément, ne montre pas le toast. Seulement en cliquant sur le nom d'utilisateur n'montrer le toast.
Je devine, que setMovementMethod(LinkMovementMethod.getInstance());
rend le TextView cliquable. Donc, les éléments eux-mêmes ne jamais obtenir cliqué plus.
Comment puis-je faire des éléments cliquables à nouveau? Avoir les mêmes fonctionnalités que je veux.