我有一个显示TextView和Button的listView。点击按钮后,我想将布局更改为完全不同的布局。这是我在相同的尝试,但它并没有表现出任何的变化(适配器类):如何用另一个单击按钮替换listView元素的布局?
public class ListViewAdapter extends ArrayAdapter<String> {
ArrayList<String> list;
public ListViewAdapter(@NonNull Context context, @LayoutRes int resource, @NonNull ArrayList<String> objects) {
super(context, resource, objects);
this.list = objects;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull final ViewGroup parent) {
final View[] listItemView = {convertView};
if(listItemView[0] == null) {
listItemView[0] =
LayoutInflater.from(getContext()).inflate(R.layout.list_element_main, parent, false);
}
TextView textView = (TextView) listItemView[0].findViewById(R.id.main_text_view);
textView.setText(list.get(position));
Button button = (Button) listItemView[0].findViewById(R.id.switch_layout_button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//switch layout:
//replace R.layout.list_element_main with
//R.layout_list_element_switch)
listItemView[0] = LayoutInflater.from(getContext()).inflate(R.layout.list_element_switch, parent, false);
ListViewAdapter.this.notifyDataSetChanged();
}
});
return listItemView[0];
}
}
新的布局中有多个元素,我使用它在其他地方也一样,所以我想重新 - 使用该布局,而不是在此布局(list_element_main)中再次添加相同的事物,从而实现其可见性(gone
和visible
)。有什么办法可以做到这一点?
使用片段的新的适配器,按钮点击与第一个 – Salman500