In meiner app habe ich listview mit checkbox und edittext (quantity) schließlich senden taste in fragment1. Ich wähle ein Kontrollkästchen aus und gebe den Wert in edittext ein und klicke auf "Senden" und gehe zu fragment2.Wie onresume in Listview checkbox und edittext value
Mein Problem ist .. Wenn ich wieder zurück zu fragment1 bedeute, möchte ich das Kontrollkästchen aktivieren, welches ich ausgewählt habe und den Mengenwert auch in editext einstellen .. Wie geht das?
Bitte jemand mir helfen ..
Mein 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:
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;
}
}
Vielen Dank im Voraus!
können Sie mir den Zweck der Instanzvariable "selFlag" in der LunchFragment.MenuItem-Klasse mitteilen? –
selFlag ist aktiviert für checkbox checked or not – hikoo
Wenn Sie es benutzen, würde Ihr Problem gelöst werden –