11

ListAdapter とリストのカスタム onItemClick メソッドを備えた単純な ListView があります。私の ListView 項目はクリック可能で、他の機能を実行できます。ただし、一部の ListView 要素には、クリック可能な電子メール アドレスも含まれています

Linkify を見つけ、ドキュメントに従ってメール アドレスの textview に追加しました。

その後、そのような「クリック可能な」テキストビューを含む ListView アイテムは、クリックできなくなり、他の機能を実行できなくなります。

ビュー全体を作成した後に OnItemClickListener を追加しようとしましたが、役に立ちません:(

Linkified textView が含まれていても、ListView アイテムをクリック可能にする方法についてのアイデアはありますか?


そもそも質問をする前に、これ以上検索しなかったことを深くお詫び申し上げます。私は自分の質問に対する答えを見つけ、それを答えとして投稿しました。

4

2 に答える 2

22

解決:

さらに多くの検索を行った後 (すでに行ったが、明らかに十分ではないようです)、最終的にこのページを見つけました。

コード例: マイ ページ (listView を含む LinearLayout) は、さまざまな ListView アイテムを作成する ListViewAdapter を割り当て、それ自体を OnClick リスナーとして割り当て、ListView を追加します。

list.setAdapter(adapter);
list.setOnItemClickListener(this);
addView(list);

ListViewAdapter は、各 ListView アイテムを作成し、そのコンテンツを割り当て、必要に応じて電子メール アドレスをリンクします。

public View getView(int position, View convertView, ViewGroup parent) {
    View view = layoutInflater.inflate(R.layout.list_item_layout, null);
    TextView textView = (TextView) view.findViewById(R.id.item_text);
    textView.setText(<some email address>);
    Linkify.addLinks(textView, Linkify.EMAIL_ADDRESSES);
}

解決策は簡単で、見つけたページのコードを使用します。TextView の子孫である LinkTextView クラスを作成し、ページに記載されているメソッドを追加しました。上記の Linkify.addLinks 呼び出しの後に、次のステートメントを追加しました。

textView.setMovementMethod(null);

ListView アイテムとリンクされたテキストの両方が再びクリック可能になりました。

繰り返しますが、そもそも質問をする前にこれ以上検索しなかったことを深くお詫び申し上げます。

于 2011-09-23T07:10:27.613 に答える
1

リスト項目の xml 定義に android:descendantFocusability="blocksDescendants" を追加するだけです。

ソース: http://www.thekeyconsultant.com/2013/06/android-quick-tip-linkify-and-listviews.html?m=1

于 2015-09-02T13:49:20.223 に答える