Ich habe ListView mit Elementen in meinem Fragment. Jedes Einzelteil hat Zähler zum BeispielRefresh Fragment von Adapter
Artikel 1 bis 4 Artikel 2 bis 5 Auf der Oberseite des Fragments I Textview mit Summe aller Elemente haben: sum - 9. Ich Artikel mit Klick auf das Bild auf der Position löschen können Reihe. In Adapter (getView()) geht es wie folgt aus:
final LinearLayout delete = (LinearLayout)dialog.findViewById(R.id.delete_layout);
delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mParts.remove(part);
notifyDataSetChanged();
dialog.dismiss();
}
});
Der Artikel wird aus der Liste entfernt, aber Zählerwert nicht ändert - für 2 Beispiel Artikel wurde entfernt, aber Zähler zeigt noch 5. ich sie aktualisieren in onResume() -Methode und es funktioniert aber nur, wenn ich Fragment verlasse und darauf zurück komme. Ich versuche Update-Methode in Fragmente zu schreiben und es in Adapter verwenden - ich erstellt Konstruktor mit Fragmente:
public PartAdapter(Context context, int resource, List objects, InvActivity mActivity,InvFragment mFragment) {
super(context, resource,objects);
this.mParts = objects;
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.mActivity=mActivity;
this.mFragment = mFragment;
}
aber wenn ich fragment.something nenne ich null Punkt Ausnahme erhalten:/Wie kann ich aktualisieren Fragment/Zähler Textview aus Adapter? Ich habe auch versucht, das Fragment wieder zu setzen, aber es funktioniert nicht.
Teil meines Adapters (es ist ziemlich lang)
public class PartAdapter extends ArrayAdapter {
private OnUpdateListener listener;
public interface OnUpdateListener {
void onUpdate(String text);
}
public void setOnUpdateListner(OnUpdateListener listener) {
this.listener = listener;
}
private List<Part>mParts;
private LayoutInflater mInflater;
private TextView mPartName;
public CheckBox mState;
private ImageView mActionArrow;
public static final String TAG = PartAdapter.class.getSimpleName();
private static final int CAM_REQUEST = 1313;
private InvActivity mActivity;
private AdapterCallback mAdapterCallback;
private TextView mCounter;
private ImageView mDelete;
private InvFragment mFragment;
public boolean shouldScan = true;
private final byte[] pal = new byte[]{
(byte) 0xDA, (byte) 0xAD, // const
(byte) 0x04, (byte) 0x74, (byte) 0x31, // com
(byte) 0xe7, (byte) 0x64 //last
};
private final byte[] readId = new byte[]{
(byte) 0xDA, (byte) 0xAD, // const
(byte) 0x04, (byte) 0x6f, (byte) 0x69, // com
(byte) 0xec, (byte) 0x6e //last
};
private UsbManager usbManager;
private UsbDevice device;
public List<String> codes;
public PartAdapter(Context context, int resource, List objects, InvActivity mActivity,AdapterCallback callback) {
super(context, resource,objects);
this.mParts = objects;
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.mActivity=mActivity;
this.mAdapterCallback = callback;
}
public PartAdapter(Context context, int resource, List objects, InvActivity mActivity,InvFragment mFragment) {
super(context, resource,objects);
this.mParts = objects;
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.mActivity=mActivity;
this.mFragment = mFragment;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
if(convertView == null)
convertView=mInflater.inflate(R.layout.part_item,parent,false);
mState = (CheckBox) convertView.findViewById(R.id.state_chb);
mDelete = (ImageView)convertView.findViewById(R.id.delete_car);
mDelete.setVisibility(View.INVISIBLE);
final Part party = mParts.get(position);
if(party.isScan() || party.getType().contentEquals("2")) {
mState.setChecked(true);
} else if (!party.isScan()){
mState.setChecked(false);
}
if(party.getType().contentEquals("2"))
mDelete.setVisibility(View.VISIBLE);
if(mParts.get(position).getClass().isInstance(new Part())) {
final Part part = (Part) mParts.get(position);
mPartName = (TextView)convertView.findViewById(R.id.car_name_tv);
mState = (CheckBox) convertView.findViewById(R.id.state_chb);
mPartName.setText(part.getName());
mActionArrow = (ImageView)convertView.findViewById(R.id.arrow_action);
mCounter = (TextView)convertView.findViewById(R.id.car_count_tv);
mCounter.setText(part.getQuantity());
if(!part.isScan()) {
mState.setChecked(false);
} else if(part.isScan() || part.getType().contentEquals("2")) {
mState.setChecked(true);
}
mActionArrow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Dialog dialog = new Dialog(getContext());
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.dialog_context_menu);
final LinearLayout delete = (LinearLayout)dialog.findViewById(R.id.delete_layout);
delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int totalSum = 5;
int partValue = 2;
mParts.remove(part);
notifyDataSetChanged();
dialog.dismiss();
if(listener != null){
listener((totalSum - partValue).toString());
}
}
});
LinearLayout photo = (LinearLayout)dialog.findViewById(R.id.photo_layout);
photo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mActivity.dispatchTakePictureIntent();
}
});
LinearLayout note = (LinearLayout)dialog.findViewById(R.id.note_layout);
note.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
final Dialog noteDialog = new Dialog(getContext());
noteDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
noteDialog.setContentView(R.layout.dialog_note);
final EditText noteET = (EditText)noteDialog.findViewById(R.id.note_et);
if(!part.getNote().contentEquals("null"))
noteET.setText(part.getNote());
Button save = (Button)noteDialog.findViewById(R.id.save_button);
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
part.setNote(noteET.getText().toString());
noteDialog.dismiss();
}
});
noteDialog.show();
Button cancel = (Button) noteDialog.findViewById(R.id.cancel_button);
cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
noteDialog.dismiss();
}
});
}
});
LinearLayout values = (LinearLayout)dialog.findViewById(R.id.values_layout);
values.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Dialog noteDialog = new Dialog(getContext());
noteDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
noteDialog.setContentView(R.layout.dialog_note);
final EditText noteET = (EditText)noteDialog.findViewById(R.id.note_et);
noteET.setInputType(InputType.TYPE_CLASS_NUMBER);
Button save = (Button)noteDialog.findViewById(R.id.save_button);
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
part.setQuantity(noteET.getText().toString());
noteDialog.dismiss();
dialog.dismiss();
}
});
noteDialog.show();
Button cancel = (Button) noteDialog.findViewById(R.id.cancel_button);
cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
noteDialog.dismiss();
dialog.dismiss();
}
});
}
});
dialog.show();
}
});
}
return convertView;
}
und aus meiner Tätigkeit:
public void onUpdate(String value){
mCountTV.setText(value);
}
private void createAdapter() {
adapter.setOnUpdateListner(this);
}
}
try-Schnittstelle in Ihrem Adapter als Fang löscht Rückruf in Ihrem Fragmente und Update hinzufügen Textview –