0
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 。我可以从适配器做到这一点,但由于一些可访问性问题。我想这样做。

4

3 回答 3

1

关于什么:

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) {


        }

    });
}
于 2014-07-21T09:57:35.740 回答
1

尝试以下操作:

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

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

于 2014-07-21T09:50:29.137 回答
0

通过查看@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();

                    }
                });

            }});
于 2014-07-21T10:11:24.303 回答