2

我有一个包含 4 个 TextView 的自定义 ListView。现在,TextViews 必须是可链接的。由于 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 侦听器正在设置。个人点击仅在第二次之后有效。在这种情况下我该怎么办?

4

2 回答 2

2

将此代码放在getView()适配器中的方法中。onItemClick当您单击列表视图的一行时,会调用您的代码。

于 2012-08-20T14:21:48.790 回答
0

为每个文本视图添加以下属性(布局中的四个文本视图将用作自定义列表项)

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(View view)”方法“Position variable”中指出的那样访问该值


在列表视图中--->

android:focusable="false"

在初始化列表视图后不久,在代码中添加“setItemsCanFocus(true)”。这表示可聚焦项目包含在列表视图中的每个项目中。

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