如何获取列表视图选定行的小部件ID

Posted

技术标签:

【中文标题】如何获取列表视图选定行的小部件ID【英文标题】:How to get widget ids of selected row of listview 【发布时间】:2012-11-10 21:42:27 【问题描述】:

我在我的应用程序中使用自定义列表视图。在我的行中我有(两个图像,剩余的文本视图)。

当我点击一个textview时,我想设置另一个textview数据。我写了下面的代码来做到这一点

     likes.setOnClickListener(new OnClickListener() 


        public void onClick(View v) 
//          if(likes.getText().toString().equals("Like"))
               TextView t=(TextView)v;
              TextView likesnumber1 = (TextView) findViewById(R.id.likesnumber);
//            TextView  likesnumber = (TextView) convertView.findViewById(R.id.likesnumber);
                int i=  Integer.parseInt(likescount.get(position));

           if(like_or_ulike.get(position).equals("Like"))
                Log.e("inlike","like");
                like_or_ulike.set(position, "Unlike");
                t.setText(like_or_ulike.get(position));
                UrltoValue.getValuefromUrl("https://graph.facebook.com/"+objectid.get(position)+"/likes?access_token="+accesstoken+"&method="+"post");
//             listView.getAdapter().getItemAt(position);
               j=i+1;
               String s=Integer.toString(j);
            likescount.set(position, s);
             likesnumber1.setText(likescount.get(position));

            
            else
                Log.e("unlike","unlike");
                like_or_ulike.set(position, "Like");
                t.setText(like_or_ulike.get(position));
                UrltoValue.getValuefromUrl("https://graph.facebook.com/"+objectid.get(position)+"/likes?access_token="+accesstoken+"&method="+"DELETE");

                   j=i-1;
                 String s=Integer.toString(j);
                likescount.set(position, s);
                 likesnumber1.setText(likescount.get(position));
            
        
    );

当我单击 textview 时,如何获取特定行的另一个 textview id。是否可以获取该特定行的 id。

【问题讨论】:

是你想要的textview在同一行吗?还是不同? 我想要同一行的textview id,即当我点击like时的likescount id,因为我想设置值。 【参考方案1】:

当您想在同一行中获取文本视图时,您可以执行以下操作。

使用被点击的文本视图获取它的父视图,然后使用父视图你可以搜索你的文本视图:

View parent = (View) textViewThatWasClicked.getParent();
        if (parent != null) 
            TextView textViewThatYouWantToChange = parent.findViewById(R.id.textViewThatYouWantToChange);
            textViewThatYouWantToChange.setText(...);
        

您需要将要查找的 id 更改为其他 textview 的 id。如果您需要设置一个 id,您可以在您使用的 xml 布局文件中执行此操作。

我无法很好地遵循您的代码,无法真正为您提供代码,但这应该足以让您朝着正确的方向前进。

【讨论】:

我只是想知道,android facebook 应用程序如何立即更新点赞数。这里我只是增加和减少值。我做得对吗? 如果这特别适用于 facebook,我建议查看 android facebook sdk developers.facebook.com/android【参考方案2】:

如果列表视图中的每一行都有自定义布局,那么您可以为自定义视图中的每个视图提供 id,然后为您的列表视图设置 setOnItemClickListener,您将能够以视图的形式访问每一行。 当您可以像视图一样访问您的行时,您可以使用 view.findViewById 并通过它们的 id 从自定义视图中获取所有视图。

【讨论】:

但我想获取行的视图 ID,而不是在 itemclick 上。我想在单击行视图中的 textview 时获取 ID。 然后在适配器的 getView 中,您可以访问所有视图,并且可以在 getView 中设置 OnClickListener,在这种情况下,您可以访问所有其他视图(顺便说一句,在您的列表中使用 ViewHolders)。

以上是关于如何获取列表视图选定行的小部件ID的主要内容,如果未能解决你的问题,请参考以下文章

如何从 django 的表中获取选定行的记录?

.net如何在后台获取GridView选定行的id,绑定给一个变量

如何从自定义列表视图中获取选定项目并在 toast 消息中打印?

获取子表单中选定行的ID

如何使用 where 子句获取 mysql 中选定行的总和?

从选定的列表视图项中获取 id