使用 onClick 从适配器更改 ListView 项目布局
Changing ListView item layout from adapter with onClick
我正在使用列表视图,我在 raw.xml 中有 2 种不同的布局,我试图通过它们在我的自定义列表视图适配器 class 中的可见性(GONE,VISIBLE)来控制它们。我想更改特定项目的布局 onClick。但是当我点击listview项目时,即使我不点击it.Here也只有最后一个项目的布局效果是我提前的code.Thanks。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:id="@+id/advertisement_expandable"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/layout1"
android:layout_width="match_parent"
android:layout_height="wrap_content">
.
.
.
</LinearLayout>
<RelativeLayout
android:layout_margin="10dp"
android:id="@+id/layout2"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="wrap_content">
.
.
.
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
在我正在使用的适配器上;
RawView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(currentAdvertisement.isExpanded){
layout1.setVisibility(View.VISIBLE);
layout2.setVisibility(View.GONE);
currentAdvertisement.isExpanded=false;
}else{
layout1.setVisibility(View.GONE);
layout2.setVisibility(View.VISIBLE);
currentAdvertisement.isExpanded=true;
}
}
});
我想你需要这样的东西
RawView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
View layout1 = v.findViewById(R.id.layout1);
View layout2 = v.findViewById(R.id.layout2);
if(currentAdvertisement.isExpanded){
layout1.setVisibility(View.VISIBLE);
layout2.setVisibility(View.GONE);
currentAdvertisement.isExpanded=false;
}else{
layout1.setVisibility(View.GONE);
layout2.setVisibility(View.VISIBLE);
currentAdvertisement.isExpanded=true;
}
}
});
否则,如果你在你的适配器中膨胀它,你总是覆盖两个变量,它们总是指最后膨胀的视图
我正在使用列表视图,我在 raw.xml 中有 2 种不同的布局,我试图通过它们在我的自定义列表视图适配器 class 中的可见性(GONE,VISIBLE)来控制它们。我想更改特定项目的布局 onClick。但是当我点击listview项目时,即使我不点击it.Here也只有最后一个项目的布局效果是我提前的code.Thanks。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:id="@+id/advertisement_expandable"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/layout1"
android:layout_width="match_parent"
android:layout_height="wrap_content">
.
.
.
</LinearLayout>
<RelativeLayout
android:layout_margin="10dp"
android:id="@+id/layout2"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="wrap_content">
.
.
.
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
在我正在使用的适配器上;
RawView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(currentAdvertisement.isExpanded){
layout1.setVisibility(View.VISIBLE);
layout2.setVisibility(View.GONE);
currentAdvertisement.isExpanded=false;
}else{
layout1.setVisibility(View.GONE);
layout2.setVisibility(View.VISIBLE);
currentAdvertisement.isExpanded=true;
}
}
});
我想你需要这样的东西
RawView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
View layout1 = v.findViewById(R.id.layout1);
View layout2 = v.findViewById(R.id.layout2);
if(currentAdvertisement.isExpanded){
layout1.setVisibility(View.VISIBLE);
layout2.setVisibility(View.GONE);
currentAdvertisement.isExpanded=false;
}else{
layout1.setVisibility(View.GONE);
layout2.setVisibility(View.VISIBLE);
currentAdvertisement.isExpanded=true;
}
}
});
否则,如果你在你的适配器中膨胀它,你总是覆盖两个变量,它们总是指最后膨胀的视图