【问题标题】:Capturing TextView clicks in ListView在 ListView 中捕获 TextView 点击
【发布时间】:2012-08-20 14:18:15
【问题描述】:

我有一个包含 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 侦听器正在设置。个人点击仅在第二次之后有效。这种情况我该怎么办?

【问题讨论】:

  • 我建议你从适配器做点击

标签: android listview onclick textview linkify


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    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]
    

    【讨论】:

      猜你喜欢
      • 2016-07-18
      • 1970-01-01
      • 1970-01-01
      • 2017-08-15
      • 1970-01-01
      • 2012-09-07
      • 1970-01-01
      • 1970-01-01
      • 2015-05-09
      相关资源
      最近更新 更多