[英]Handle Button Clicks in CursorAdapter
I want to achieve drop down and sum up for a View
in my ListView Data is being fetched from the database and am using a cursor adapter, I have tried to add onClickListner
for the button in onItemClickListner
But no Success.我想在我的 ListView 中实现下拉和总结
View
数据正在从数据库中获取,并且正在使用 cursor 适配器,我试图为onClickListner
中的按钮添加onItemClickListner
但没有成功。
The problem I am facing is When button DROPDOWN
is clicked it will make relative layout
Visible but when clicked again it won't relative layout
visibility to GONE
我面临的问题是当单击按钮
DROPDOWN
时,它将使relative layout
可见,但是当再次单击时,它不会relative layout
可见性GONE
Heres my Code for CursorAdapter这是我的 CursorAdapter 代码
public class ProductViewCursorAdapter extends CursorAdapter {
private CardView cv_singleItem;
private RelativeLayout infoLayout;
private Button dropDown;
public ProductViewCursorAdapter(Context context, Cursor c) {
super(context, c, 0);
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
return LayoutInflater.from(context).inflate(R.layout.custom_product_view_listview,parent,false);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
cv_singleItem = view.findViewById(R.id.cv_custom_single_product);
infoLayout = view.findViewById(R.id.layout_dropdown_relative);
dropDown = view.findViewById(R.id.expand_user_info_listView);
dropDown.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (infoLayout.getVisibility() == View.GONE){
TransitionManager.beginDelayedTransition(cv_singleItem,new AutoTransition());
infoLayout.setVisibility(View.VISIBLE);
dropDown.setBackgroundResource(R.drawable.ic_sumup);
}else{
Log.i("THIS IS TEST","DEMO VIEW "+ infoLayout.getVisibility());
TransitionManager.beginDelayedTransition(cv_singleItem,new AutoTransition());
infoLayout.setVisibility(View.GONE);
dropDown.setBackgroundResource(R.drawable.ic_dropdown);
}
}
});
}
}
ListView single View XML ListView 单视图 XML
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.cardview.widget.CardView
android:id="@+id/cv_custom_single_product"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/TextAppearance.AppCompat.Title">
<LinearLayout
android:background="#D5000000"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/image_layout_main"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/iv_product_image_listView"
android:layout_width="match_parent"
android:scaleType="fitCenter"
android:src="@drawable/selimage"
android:layout_height="200dp"/>
<TextView
android:id="@+id/tv_no_image_available"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="No Image Available"
android:textAlignment="center"
android:paddingTop="5dp"
android:textSize="15sp"
android:textStyle="bold|italic"
android:textColor="@color/white"/>
<TextView
android:id="@+id/tv_product_name_listView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Kurti"
android:textSize="18sp"
android:textColor="#FFFFFF"
android:fontFamily="sans-serif-black"
android:textStyle="italic"
android:layout_marginLeft="20dp"
android:layout_below="@id/iv_product_image_listView"
android:layout_marginTop="-25dp"/>
<Button
android:id="@+id/expand_user_info_listView"
android:layout_alignParentEnd="true"
android:layout_below="@id/iv_product_image_listView"
android:focusable="false"
android:layout_marginTop="-49dp"
android:layout_marginEnd="8dp"
android:layout_width="50dp"
android:layout_height="50dp"
android:background="@drawable/ic_dropdown"/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/layout_dropdown_relative"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
android:layout_marginStart="15dp"
android:layout_marginEnd="15dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp">
<TextView
android:id="@+id/tv_date_dropdown_listView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2020-12-14"
android:textAppearance="?android:textAppearanceMedium"
android:textColor="#E2FFFFFF"
android:fontFamily="sans-serif-condensed"
android:textStyle="bold"
android:layout_marginStart="4dp"/>
<TextView
android:id="@+id/tv_profit_dropdown_listView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Profit 500"
android:textAppearance="?android:textAppearanceMedium"
android:textColor="#E2FFFFFF"
android:fontFamily="sans-serif-condensed"
android:textStyle="bold"
android:layout_marginStart="4dp"
android:layout_alignParentEnd="true"/>
<TextView
android:id="@+id/tv_sellingPrice_dropdown_listView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Selling Price: 800"
android:textAppearance="?android:textAppearanceMedium"
android:textColor="#E2FFFFFF"
android:fontFamily="sans-serif-condensed"
android:textStyle="bold"
android:layout_marginStart="4dp"
android:layout_below="@id/tv_date_dropdown_listView"
android:paddingTop="3dp"/>
<TextView
android:id="@+id/tv_actualPrice_dropDown_listView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Actual Price: 850"
android:textAppearance="?android:textAppearanceMedium"
android:textColor="#E2FFFFFF"
android:fontFamily="sans-serif-condensed"
android:textStyle="bold"
android:layout_marginStart="4dp"
android:layout_alignParentRight="true"
android:layout_below="@id/tv_profit_dropdown_listView"
android:paddingTop="3dp"/>
<TextView
android:id="@+id/tv_pending_dropdown_listView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Pending: 0"
android:textAppearance="?android:textAppearanceMedium"
android:textColor="#F50057"
android:fontFamily="sans-serif-condensed"
android:textStyle="bold"
android:layout_marginStart="4dp"
android:layout_below="@id/tv_sellingPrice_dropdown_listView"
android:paddingTop="3dp"/>
<Button
android:id="@+id/btn_update_single_item"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_below="@id/tv_actualPrice_dropDown_listView"
android:layout_alignParentEnd="true"
android:background="@drawable/ic_update"/>
</RelativeLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
</RelativeLayout>
You are using the same infoLayout
for every list view row.您对每个列表视图行使用相同的
infoLayout
。 Every time bindView()
gets called you replace the infoLayout
with new layout.每次调用
bindView()
时,您都将infoLayout
替换为新布局。 This of course causes the problem that when you use infoLayout.setVisibility(View.VISIBLE);
这当然会导致您使用
infoLayout.setVisibility(View.VISIBLE);
时出现的问题。 the infoLayout
it's not the same layout it was when the list view row was created because you have replaced it. infoLayout
它与创建列表视图行时的布局不同,因为您已经替换了它。
So replace,所以更换,
infoLayout = view.findViewById(R.id.layout_dropdown_relative);
with和
final RelativeLayout infoLayout = view.findViewById(R.id.layout_dropdown_relative);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.