【问题标题】:Getting listView child on itemClicked在 itemClicked 上获取 listView 子项
【发布时间】:2014-09-11 18:34:35
【问题描述】:
listView.setOnItemClickListener(new OnItemClickListener()
{
    @Override
    public void onItemClick(AdapterView<?> parent, View view,
                int position, long id)
    {   
        //Get childViews here and set their click listener from here not from adapter 
        // something like view.forward_icon.setOnClick(...)
}});

我只是想在这里获取 ListView 项子项并设置它们的文本或从这里而不是从适配器放置一个事件。有人可以指导我如何做到这一点。我以前做过,但忘记使用该技术。这是我的 item.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/relative"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="5dp" >

    <RelativeLayout
        android:id="@+id/items"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/listview_bg"
        android:padding="5dp" >

        <TextView
            android:id="@+id/name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="5dp"
            android:text="Mote"
            android:textColor="@android:color/white"
            android:textSize="18sp" />

        <TextView
            android:id="@+id/date"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/name"
            android:padding="5dp"
            android:text="20 March 2015     17:00 to 21:00"
            android:textColor="@android:color/white" />

         <ImageView
            android:id="@+id/forward_icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_margin="3dp"
            android:src="@drawable/forward_icon" />
    </RelativeLayout>

</RelativeLayout>

我想在这里获取 forward_icon 并从这里设置一个 onclickListener。我可以从适配器做到这一点,但由于一些可访问性问题。我想这样做。

【问题讨论】:

  • 你可以从适配器类调用活动方法。
  • 从适配器设置文本和事件监听器将很容易。为什么你要反其道而行之?
  • 说来话长,兄弟。但我不需要通过适配器访问它。我想从 MainClass 访问它

标签: android listview childviews


【解决方案1】:

通过查看@zozelfelfo 的答案和其他答案,我记住了解决方案。

实现功能的正确方法是

listView.setOnItemClickListener(new OnItemClickListener()
        {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id)
            {           
                TextView tv = (TextView)view.findViewById(R.id.item_title);
                // you can also get other listView item childs like this...
                tv.setOnClickListener(new OnClickListener()
                {

                    @Override
                    public void onClick(View v)
                    {
                        Toast.makeText(context, "Title is Clicked", Toast.LENGTH_LONG).show();

                    }
                });

            }});

【讨论】:

    【解决方案2】:

    怎么样:

    ImageView imageView = view.findViewById(R.id.forward_icon);
        imageView.setOnClickListener(new OnClickListener() {
    
            @Override
            public void onClick(View v) {
    
    
            }
    
        });
    }
    

    编辑:实际上将它与 zozelfelfo 的答案结合起来:

    int childCount = listView.getChildCount();
    for (int i=0; i < childcount; i++){
        View view = listView.getChildAt(i);
        ImageView imageView = view.findViewById(R.id.forward_icon);
        imageView.setOnClickListener(new OnClickListener() {
    
            @Override
            public void onClick(View v) {
    
    
            }
    
        });
    }
    

    【讨论】:

    • 谢谢。但是您的解决方案不会在单击列表项后仅将 OnClickListener 添加到 TextView 吗?
    【解决方案3】:

    尝试以下方法:

    int childcount = listView.getChildCount();
    for (int i=0; i < childcount; i++){
          View v = ll.getChildAt(i);
    }
    

    然后为每个View设置OnClickListener,希望对你有帮助

    【讨论】:

    • 现在我可以用你的视图来做这个 view.findViewById(R.id.forward_icon)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-30
    • 2021-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多