私は、TextViewとボタンを表示する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
)。これを達成するための方法はありますか?
利用フラグメントで新しいアダプタを設定することができますが、ボタンの上に最初の1 – Salman500