【发布时间】:2017-09-02 17:32:06
【问题描述】:
我有一个 listView,它显示一个 TextView 和一个 Button。单击按钮时,我想将布局更改为完全不同的布局。这是我的尝试,但没有显示任何更改(适配器类):
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) 玩弄它的可见性 (@987654322 @ 和 visible)。有什么方法可以实现吗?
【问题讨论】:
-
使用片段,点击按钮将片段替换为第一个
标签: android android-layout listview