[英]How to onresume in listview checkbox and edittext value
In my app, i have listview with checkbox and edittext(quantity) finally submit button in fragment1. 在我的应用程序中,我具有带复选框的listview和edittext(quantity)最终在fragment1中提交按钮。 I select some checkbox and enter value in edittext and click submit button and its move to fragment2. 我选中一些复选框,然后在edittext中输入值,然后单击Submit按钮并将其移至fragment2。
My problem is.. If i again back to fragment1 means, I want to checked check box which one i choosed and set quantity value also in editext.. How to do. 我的问题是..如果我再次回到fragment1的意思,我想选中我选择的复选框并在editext中设置数量值。
Please anyone help to me.. 请任何人帮助我..
My code: 我的代码:
Fragment: 分段:
public class LunchFragment extends Fragment {
public static class MenuItem implements Parcelable {
String ItemName;
String Amount;
String Quantity;
Boolean selFlag;
public MenuItem(String name, String amt, String qty) {
this.ItemName = name;
this.Amount = amt;
this.Quantity = qty;
this.selFlag = false;
}
public MenuItem(Parcel parcel) {
this.ItemName = parcel.readString();
this.Amount = parcel.readString();
this.Quantity = parcel.readString();
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel out, int flags) {
Log.d("Check what is in Parcel", out.toString() + out.readString());
out.writeString(ItemName);
out.writeString(Amount);
out.writeString(Quantity);
}
public static Creator<MenuItem> CREATOR = new Creator<MenuItem>() {
public MenuItem createFromParcel(Parcel in) {
return new MenuItem(in);
}
public MenuItem[] newArray(int size) {
return new MenuItem[size];
}
};
}
private DBHelper mydb ;
private String quantitys = "1";
ListView menuList;
ArrayList<MenuItem> itemList = new ArrayList<MenuItem>();
ArrayList<MenuItem> selList = new ArrayList<MenuItem>();
MenuListCustomAdapter adapter;
Button order;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.menu_list_fragment, container, false);
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
mydb = new DBHelper(this.getActivity());
menuList = (ListView)view.findViewById(R.id.menuItem_list);
order = (Button)view.findViewById(R.id.order_button);
ArrayList<String> item_list = new ArrayList<String>();
ArrayList<String> price_list = new ArrayList<String>();
item_list = mydb.getAllMenuItemName();
price_list = mydb.getAllMenuItemPrice();
for(int i=0; i<item_list.size();i++){
itemList.add(new MenuItem(item_list.get(i), price_list.get(i), quantitys));
}
adapter = new MenuListCustomAdapter(itemList, this.getActivity());
menuList.setAdapter(adapter);
order.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
selList.clear();
Log.d("MenuListCount", String.valueOf(menuList.getCount()) +"--"+ adapter.getCount());
for(int i=0; i<menuList.getCount();i++) {
MenuItem item = (MenuItem) adapter.getItem(i);
Log.d("MenuChild", i + " - " + itemList.size() + "," + item.ItemName + "," + item.selFlag + "," + item.Quantity);
if(item.selFlag) {
selList.add(new MenuItem(item.ItemName, String.valueOf(Integer.parseInt(item.Quantity) * Integer.parseInt(item.Amount)), item.Quantity));
//item.selFlag = false;
}
}
if(selList.size() > 0) {
Intent accIntent = new Intent(getActivity(), OrderActivity.class);
accIntent.putExtra("item", "Order");
accIntent.putExtra("itemList", selList);
startActivity(accIntent);
} else {
Toast.makeText(getActivity().getApplicationContext(), "Please pick atleast from menu", Toast.LENGTH_SHORT).show();
}
}
});
return view;
}
public void onResume() {
super.onResume();
itemList.clear();
ArrayList<String> item_list = new ArrayList<String>();
ArrayList<String> price_list = new ArrayList<String>();
item_list = mydb.getAllMenuItemName();
price_list = mydb.getAllMenuItemPrice();
for(int i=0; i<item_list.size();i++){
itemList.add(new MenuItem(item_list.get(i), price_list.get(i), quantitys));
}
adapter = new MenuListCustomAdapter(itemList, this.getActivity());
menuList.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
}
CustomAdapter: CustomAdapter:
public class MenuListCustomAdapter extends BaseAdapter implements ListAdapter {
private ArrayList<LunchFragment.MenuItem> list = new ArrayList<LunchFragment.MenuItem>();
private Context context;
private DBHelper mydb ;
public MenuListCustomAdapter(ArrayList<LunchFragment.MenuItem> list, Context context) {
this.list = list;
this.context = context;
mydb = new DBHelper(context);
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view = convertView;
final ViewHolder holder;
Log.d("position", String.valueOf(position));
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) ((Activity)context).getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.menu_custom_fragment,null);
holder = new ViewHolder();
holder.listItemText = (TextView)view.findViewById(R.id.menu_list_item_string);
holder.listAmtText = (TextView)view.findViewById(R.id.menu_amt_list_item);
holder.qty = (EditText)view.findViewById(R.id.quantity);
holder.checkBox = (CheckBox)view.findViewById(R.id.chckbox);
holder.plus = (ImageView)view.findViewById(R.id.add);
holder.minus = (ImageView)view.findViewById(R.id.minus);
holder.info = (ImageView)view.findViewById(R.id.information);
view.setTag(holder);
}else{
holder=(ViewHolder)view.getTag();
}
holder.qty.setFilters(new InputFilter[]{
new InputFilter() {
@Override
public CharSequence filter(CharSequence cs, int start,
int end, Spanned spanned, int dStart, int dEnd) {
// TODO Auto-generated method stub
if (cs.equals("")) { // for backspace
return cs;
}
if (cs.toString().matches("[0-9]+")) {
return cs;
}
return "";
}
}
});
holder.listItemText.setText(list.get(position).ItemName);
holder.listAmtText.setText(list.get(position).Amount);
holder.qty.setText(list.get(position).Quantity);
holder.checkBox.setChecked(list.get(position).selFlag);
Log.d("QTY Id ", holder.qty.toString() + '@' + String.valueOf(position)+"--"+list.get(position).ItemName);
holder.info.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String itemName = list.get(position).ItemName;
Log.d("Selected Item",itemName);
ArrayList<String> temp_item_list = new ArrayList<String>();
temp_item_list = mydb.getComboItem(itemName);
List<String> temp = new ArrayList<String>();
Log.d("ComboListSize", String.valueOf(temp_item_list.size()));
for(int i=0; i<temp_item_list.size();i++){
String[] a= temp_item_list.get(i).split("\\$");
for(int x=0;x<a.length;x++){
temp.add(a[x]);
}
}
//Create sequence of items
final CharSequence[] chars = temp.toArray(new String[temp.size()]);
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(context);
dialogBuilder.setTitle(list.get(position).ItemName + " Inside");
dialogBuilder.setItems(chars, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
String selectedText = chars[item].toString();
}
});
//Create alert dialog object via builder
AlertDialog alertDialogObject = dialogBuilder.create();
//Show the dialog
alertDialogObject.show();
}
});
holder.checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("Check Box Click", String.valueOf(position));
if(holder.checkBox.isChecked()){
list.get(position).selFlag = true;
} else {
holder.qty.setText("1");
list.get(position).selFlag = false;
}
}
});
holder.plus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(list.size()>0){
list.get(position).selFlag = true;
holder.checkBox.setChecked(list.get(position).selFlag);
String value = list.get(position).Quantity.toString();
Log.d("plus Position on Click", String.valueOf(position));
int count = Integer.parseInt(value)+1;
list.get(position).Quantity = String.valueOf(count);
holder.qty.setText(String.valueOf(count));
Log.d("plus value", String.valueOf(count));
}
}
});
holder.minus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String value = list.get(position).Quantity.toString();
if(Integer.parseInt(value)>1){
Log.d("minus Position on Click", String.valueOf(position));
int count = Integer.parseInt(value)-1;
list.get(position).Quantity = String.valueOf(count);
holder.qty.setText(String.valueOf(count));
Log.d("subtarct value", String.valueOf(count));
}
}
});
return view;
}
public static class ViewHolder{
public TextView listItemText;
public TextView listAmtText;
public EditText qty;
public CheckBox checkBox;
public ImageView plus;
public ImageView minus;
public ImageView info;
}
}
Thanks in advance! 提前致谢!
remove all holder.VIEW.set..
values from onClick()
methods. 从onClick()
方法中删除所有holder.VIEW.set..
值。 And update the values in your list
and add this line below - notifyItemChanged(position);
并更新list
的值,并在下面添加此行notifyItemChanged(position);
Also use setTag(position);
也可以使用setTag(position);
for each of your views. 对于您的每个观点。 And retrieve them in your onClick()
method. 并在您的onClick()
方法中检索它们。
Check piece of code I am using - 检查我正在使用的一段代码-
holder.chkFavorite.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = (int) v.getTag();
if (objects.get(position).getProduct().isProductWishlistStatus())
objects.get(position).getProduct().setProductWishlistStatus(true);
else
objects.get(position).getProduct().setProductWishlistStatus(false);
notifyItemChanged(position);
}
});
holder.chkFavorite.setChecked(objects.get(position).getProduct().isProductWishlistStatus());
holder.chkFavorite.setText(String.valueOf(objects.get(position).getProduct().getProductWishlistCount()));
holder.chkFavorite.setTag(position);
Maybe I didn't got all the problem, but here is what I suggest you: 也许我并没有解决所有问题,但是我建议您这样做:
1. If you preserve data for list with all changes - when returning to fragment
, just call adapter.notifyDataSetChanged()
. 1.如果保留所有更改的列表数据-返回fragment
,只需调用adapter.notifyDataSetChanged()
。 This will show updated data. 这将显示更新的数据。
2. If you store your LunchFragment.MenuItem
class in database
- on some changes put new values into it. 2.如果您将LunchFragment.MenuItem
类存储在database
- LunchFragment.MenuItem
一些更改后,将新值放入其中。 After return to first fragment
- read these values again from database
and create new adapter
(or replace data source in existing one and call adapter.notifyDataSetChanged()
). 返回第一个fragment
-再次从database
读取这些值并创建新的adapter
(或替换现有adapter
数据源,然后调用adapter.notifyDataSetChanged()
)。
Hope this helps. 希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.