【发布时间】:2021-07-05 01:51:44
【问题描述】:
在我的列表视图中,有很多组件。我想点击的一个组件是名为 kickOutBtn 的 ImageButton。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/drawer_pane"
android:paddingVertical="6dp"
android:descendantFocusability="blocksDescendants"
android:paddingHorizontal="28dp">
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/profile_image"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_centerVertical="true"
android:background="@color/colorGray"/>
<TextView
android:id="@+id/profile_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
android:text="nickname"
android:layout_centerVertical="true"
android:layout_marginLeft="8dp"
android:layout_toRightOf="@id/profile_image"
android:textColor="@color/colorBlack"
android:textSize="10dp"/>
<RelativeLayout
android:id="@+id/fake_click_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="false"
android:layout_centerVertical="true"
android:layout_alignParentRight="true">
<TextView
android:id="@+id/owner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
android:text="manager"
android:layout_centerInParent="true"
android:textColor="@color/colorBlack"
android:textSize="10dp"/>
<ImageButton
android:id="@+id/kickOutBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="4dp"
android:visibility="invisible"
android:scaleType="fitCenter"
android:background="@color/colorTransparent"
android:tint="@color/colorBlack"
android:src="@drawable/ic_baseline_close_24"/>
</RelativeLayout>
</RelativeLayout>
它们在视图中的相同位置。
我的意思是,Textview 位于 ImageButton 的中心。
如果 ListView 项的目标是经理,我想让其列表项的 ImageButton 不可见并打开显示经理的 Textview,如果不是,我想让其列表项的 ImageButton 显示相反,我想使所有者 Textview 不可见。 (默认是imagebutton不可见,textview可见)
为此,我尝试了这段代码。
// ListAdapter中的getView
@Override
public View getView(int i, View convertView, ViewGroup viewGroup) {
View view;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.navi_list_menu_item, null);
} else {
view = convertView;
}
ImageButton kick_btn = (ImageButton) view.findViewById(R.id.kickOutBtn);
TextView supervisor_tv = (TextView) view.findViewById(R.id.owner);
if (roomSupervisor.equals(mNavItems.get(i).fb_uid)) {
kick_btn.setVisibility(View.INVISIBLE);
} else {
supervisor_tv.setVisibility(View.INVISIBLE);
if (roomSupervisor.equals(SessionInfo.fb_uid)) {
kick_btn.setVisibility(View.VISIBLE);
} else {
kick_btn.setVisibility(View.INVISIBLE);
}
}
return view;
}
// Activity中的OnItemClickListener
private AdapterView.OnItemClickListener onItemClickListener = (adapterView, view, i, l) -> {
if(view.getId() == R.id.kickOutBtn) {
Log.d(TAG, "kick");
popupDialog(i);
} else {
Log.d(TAG, i + "is pushed");
}
};
在这种情况下,kick ImageButton 是不可点击的……(列表行的点击事件执行良好)
每当我单击该按钮时,Activity 中的 onItemClickListener 都没有响应...
我该怎么办...?
【问题讨论】:
-
你能发布适配器的完整代码吗?
-
尝试将
supervisor_tv.setVisibility(View.INVISIBLE);更改为supervisor_tv.setVisibility(View.GONE);。