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。我可以从适配器做到这一点,但由于一些可访问性问题。我想这样做。
答案 0 :(得分:1)
尝试以下方法:
int childcount = listView.getChildCount();
for (int i=0; i < childcount; i++){
View v = ll.getChildAt(i);
}
然后为每个OnClickListener
设置View
,希望有帮助
答案 1 :(得分: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) {
}
});
}
答案 2 :(得分: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();
}
});
}});