Я сталкиваюсь с проблемой, когда мое приложение Android меняет фрагмент или изменение позиции устройства на ландшафт. Контент в ListView будет Destory /Delete. Я прочитал некоторую информацию об этом, что мне нужно будет сохранить контент / данные ListView в разделе «OnsaveInstancate» и использовать «Oncreate», чтобы поместить этот сохраненный контент / данные обратно в ListView, когда фрагмент был воссоздан. Но я не уверен, в чем участвовать в разделе «onsaveinstncestate». Пожалуйста, помогите мне с этим. Из того, что я читаю, некоторые сказали, что это довольно легко преодолеть, но для меня это, кажется, огромная стена для преодоления. < /P>
ниже - код. Некоторая часть была изменена. < /P>
public class Tab extends Fragment {
ArrayList beta1;
ListView listView;
private static ExpansesCustomAdapter adapter;
@Override
public void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(savedInstanceState==null){
}else{
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootview = inflater.inflate(R.layout.tab2, container, false);
Button Add = (Button)rootview.findViewById(R.id.btnAdd);
listView=(ListView)rootview.findViewById(R.id.list);
beta1= new ArrayList();
listView.setAdapter(adapter);
Add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Dialog dialogsetting = new Dialog(getActivity());
dialogsetting.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialogsetting.setContentView(R.layout.entry_input);
final EditText one = (EditText)dialogsetting.findViewById(R.id.et_one);
final EditText two = (EditText)dialogsetting.findViewById(R.id.et_two);
Button ok = (Button)dialogsetting.findViewById(R.id.btnOK);
Button cancel = (Button)dialogsetting.findViewById(R.id.btnCancel);
ok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dataModels.add(new ExpaneseModel(one.getText().toString(), two.getText().toString()));
adapter.notifyDataSetChanged();
dialogsetting.dismiss();
}
});
cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialogsetting.dismiss();
}
});
dialogsetting.show();
}
});
return rootview;
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
//I am not sure what code to type in here
}
}
< /code>
Ниже expanesemodel: < /p>
public class ExpaneseModel {
String one;
String two;
public ExpaneseModel(String one, String two) {
this.one=one;
this.two=two;
}
public String getOne() {
return one;
}
public String getTwo() {
return two;
}
}
< /code>
ниже приведен пользовательский класс адаптера: < /p>
public class ExpansesCustomAdapter extends ArrayAdapter implements View.OnClickListener{
private ArrayList dataSet;
Context mContext;
// View lookup cache
private static class ViewHolder {
TextView txtOne;
TextView txtTwo;
}
public ExpansesCustomAdapter(ArrayList data, Context context) {
super(context, R.layout.expanses_row_item, data);
this.dataSet = data;
this.mContext=context;
}
@Override
public void onClick(View v) {
int position=(Integer) v.getTag();
Object object= getItem(position);
ExpaneseModel dataModel=(ExpaneseModel) object;
}
private int lastPosition = -1;
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// Get the data item for this position
ExpaneseModel dataModel = getItem(position);
// Check if an existing view is being reused, otherwise inflate the view
ViewHolder viewHolder; // view lookup cache stored in tag
final View result;
if (convertView == null) {
viewHolder = new ViewHolder();
LayoutInflater inflater = LayoutInflater.from(getContext());
convertView = inflater.inflate(R.layout.expanses_row_item, parent, false);
viewHolder.txtOne = (TextView) convertView.findViewById(R.id.one);
viewHolder.txtTwo = (TextView) convertView.findViewById(R.id.two)
result=convertView;
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
result=convertView;
}
Animation animation = AnimationUtils.loadAnimation(mContext, (position > lastPosition) ? R.anim.up_from_bottom : R.anim.down_from_top);
result.startAnimation(animation);
lastPosition = position;
viewHolder.txtName.setText(dataModel.getName());
viewHolder.txtType.setText(dataModel.getAmount());
viewHolder.info.setOnClickListener(this);
viewHolder.info.setTag(position);
// Return the completed view to render on screen
return convertView;
}
}
Подробнее здесь: https://stackoverflow.com/questions/459 ... g-fragment
Как сохранить контент в ListView после изменения фрагмента ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1738299164
Anonymous
Я сталкиваюсь с проблемой, когда мое приложение Android меняет фрагмент или изменение позиции устройства на ландшафт. Контент в ListView будет Destory /Delete. Я прочитал некоторую информацию об этом, что мне нужно будет сохранить контент / данные ListView в разделе «OnsaveInstancate» и использовать «Oncreate», чтобы поместить этот сохраненный контент / данные обратно в ListView, когда фрагмент был воссоздан. Но я не уверен, в чем участвовать в разделе «onsaveinstncestate». Пожалуйста, помогите мне с этим. Из того, что я читаю, некоторые сказали, что это довольно легко преодолеть, но для меня это, кажется, огромная стена для преодоления. < /P>
ниже - код. Некоторая часть была изменена. < /P>
public class Tab extends Fragment {
ArrayList beta1;
ListView listView;
private static ExpansesCustomAdapter adapter;
@Override
public void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(savedInstanceState==null){
}else{
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootview = inflater.inflate(R.layout.tab2, container, false);
Button Add = (Button)rootview.findViewById(R.id.btnAdd);
listView=(ListView)rootview.findViewById(R.id.list);
beta1= new ArrayList();
listView.setAdapter(adapter);
Add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Dialog dialogsetting = new Dialog(getActivity());
dialogsetting.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialogsetting.setContentView(R.layout.entry_input);
final EditText one = (EditText)dialogsetting.findViewById(R.id.et_one);
final EditText two = (EditText)dialogsetting.findViewById(R.id.et_two);
Button ok = (Button)dialogsetting.findViewById(R.id.btnOK);
Button cancel = (Button)dialogsetting.findViewById(R.id.btnCancel);
ok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dataModels.add(new ExpaneseModel(one.getText().toString(), two.getText().toString()));
adapter.notifyDataSetChanged();
dialogsetting.dismiss();
}
});
cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialogsetting.dismiss();
}
});
dialogsetting.show();
}
});
return rootview;
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
//I am not sure what code to type in here
}
}
< /code>
Ниже expanesemodel: < /p>
public class ExpaneseModel {
String one;
String two;
public ExpaneseModel(String one, String two) {
this.one=one;
this.two=two;
}
public String getOne() {
return one;
}
public String getTwo() {
return two;
}
}
< /code>
ниже приведен пользовательский класс адаптера: < /p>
public class ExpansesCustomAdapter extends ArrayAdapter implements View.OnClickListener{
private ArrayList dataSet;
Context mContext;
// View lookup cache
private static class ViewHolder {
TextView txtOne;
TextView txtTwo;
}
public ExpansesCustomAdapter(ArrayList data, Context context) {
super(context, R.layout.expanses_row_item, data);
this.dataSet = data;
this.mContext=context;
}
@Override
public void onClick(View v) {
int position=(Integer) v.getTag();
Object object= getItem(position);
ExpaneseModel dataModel=(ExpaneseModel) object;
}
private int lastPosition = -1;
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// Get the data item for this position
ExpaneseModel dataModel = getItem(position);
// Check if an existing view is being reused, otherwise inflate the view
ViewHolder viewHolder; // view lookup cache stored in tag
final View result;
if (convertView == null) {
viewHolder = new ViewHolder();
LayoutInflater inflater = LayoutInflater.from(getContext());
convertView = inflater.inflate(R.layout.expanses_row_item, parent, false);
viewHolder.txtOne = (TextView) convertView.findViewById(R.id.one);
viewHolder.txtTwo = (TextView) convertView.findViewById(R.id.two)
result=convertView;
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
result=convertView;
}
Animation animation = AnimationUtils.loadAnimation(mContext, (position > lastPosition) ? R.anim.up_from_bottom : R.anim.down_from_top);
result.startAnimation(animation);
lastPosition = position;
viewHolder.txtName.setText(dataModel.getName());
viewHolder.txtType.setText(dataModel.getAmount());
viewHolder.info.setOnClickListener(this);
viewHolder.info.setTag(position);
// Return the completed view to render on screen
return convertView;
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/45942548/how-to-retain-content-in-listview-after-changing-fragment[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия