2

4つのTextViewを含むカスタムListViewがあります。ここで、TextViewはリンク可能である必要があります。LinkifyがListViewで機能していなかったため、callIntent関数を作成して、リンクがクリック可能かどうかを確認しました。しかし、クリック可能なリンクがない場合は、新しいアクティビティを開始したいと思います。私は次のコードを使用します:

           lvMembersList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {

          final TextView txtLine1 = (TextView) arg1.findViewById(R.id.tv_member_details_line1);
          final TextView txtLine2 = (TextView) arg1.findViewById(R.id.tv_member_details_line2);
          final TextView txtLine3 = (TextView) arg1.findViewById(R.id.tv_member_details_line3);
          final TextView txtLine4 = (TextView) arg1.findViewById(R.id.tv_member_details_line4);

         txtLine1.setOnClickListener(new OnClickListener() {
                              public void onClick(View v) {
                                     callIntent(1);
                              }
                       });

         txtLine2.setOnClickListener(new OnClickListener() {
                              public void onClick(View v) {
                                     callIntent(2);
                              }
                       });

         txtLine3.setOnClickListener(new OnClickListener() {
                              public void onClick(View v) {
                                     callIntent(3);
                              }
                       });

         txtLine4.setOnClickListener(new OnClickListener() {
                              public void onClick(View v) {
                                     callIntent(4);
                              }
                       });

}}

これで、アイテムを初めてクリックすると、TextViewリスナーが設定されます。個々のクリックは、2回目以降にのみ機能します。そのような場合はどうすればよいですか?

4

2 に答える 2

2

このコードをgetView()アダプターのメソッドに入れます。そして、あなたがリストビューの行をクリックすると、あなたのコードonItemClickで呼び出されます。

于 2012-08-20T14:21:48.790 に答える
0

各テキストビューに次の属性を追加します(カスタムリストアイテムとして使用するレイアウト内の4つのテキストビュー)

android:onClick="onTextView1_click"

-クリックイベントを個別に追跡するには、4つのテキストビューすべてに対してこれを行う必要があります-


次に、コードに次のメソッドを追加して、textview1をクリックしたときにトリガーします。

public void onTextView1_click(View view)
{
    final int position = (Integer) view.getTag();
//implementation (Which needs to be done when someone click textview1)
}

また、最も重要なのは、アダプタクラスのgetViewMethodからタグとして位置を追加する必要があることです。これは、リストビューでクリックされたアイテムを追跡するのに役立ちます

holder.textView1.setTag(position);

「onTextView1_click(Viewview)」メソッド「Positionvariable」で示したように、この値にアクセスできます。


リストビューで--->

android:focusable="false"

コードで、リストビューを初期化した直後に「setItemsCanFocus(true)」を追加します。これは、フォーカス可能なアイテムがリストビューの各アイテム内に含まれていることを示します。

lvMembersList = (ListView) findViewById(R.id.NameOfListTView);
lvMembersList.setItemsCanFocus(true);                            // <---------[X]
于 2012-08-20T14:57:20.317 に答える