我有一个按钮,当你点击它使一个EditText编辑,第二个按钮将新的字符串到数据库,该数据库返回更新后的字符串到ListView。广东话更新火力数据库的孩子不止一个时间
它工作正常,我第一次修改,但如果我想在数据库中,但在应用程序的swiching所有的时间从新字符串老串在一个循环中再次编辑其更新的价值。
this is my FireBase Database structure:(我希望能够更新“_name”例如一个以上的时间)
,这是我的适配器:(注意“editTremp”和“submitText”按钮)
public class personalZoneAdapter extends ArrayAdapter<TrempData> {
static class ViewHolderItem{
private TextView msg , extra,phone ,date_time ,uid ;
private EditText name ;
private ImageButton deleteTremp , editTremp , phoneBtn , submitText ;
private ImageView sideview;
}
private int layoutResource;
private FirebaseAuth firebaseAuth;
private DatabaseReference mDatabase;
public personalZoneAdapter(Context context, int layoutResource, ArrayList<TrempData> list) {
super(context, layoutResource, list);
this.layoutResource = layoutResource;
firebaseAuth = FirebaseAuth.getInstance();
mDatabase = FirebaseDatabase.getInstance().getReference().child("Posts");
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view = convertView;
final ViewHolderItem viewHolder;
if (view == null) {
final LayoutInflater Inflater = LayoutInflater.from(getContext());
view = Inflater.inflate(layoutResource, null);
viewHolder = new ViewHolderItem();
viewHolder.name = (EditText) view.findViewById(R.id.user_name);
viewHolder.phone = (TextView) view.findViewById(R.id.user_phone);
viewHolder.date_time = (TextView) view.findViewById(R.id.user_date_time);
viewHolder.msg = (TextView) view.findViewById(R.id.user_msg);
viewHolder.extra = (TextView) view.findViewById(R.id.user_extra);
viewHolder.uid = (TextView) view.findViewById(R.id.user_uid);
viewHolder.deleteTremp = (ImageButton)view.findViewById(R.id.remove);
viewHolder.editTremp = (ImageButton)view.findViewById(R.id.edit);
viewHolder.phoneBtn = (ImageButton)view.findViewById(R.id.phone_btn);
viewHolder.submitText = (ImageButton)view.findViewById(R.id.submitText);
viewHolder.sideview = (ImageView)view.findViewById(R.id.user_image);
view.setTag(viewHolder);
}
else{
viewHolder = (ViewHolderItem) convertView.getTag();
}
final TrempData data = getItem(position);
//data.setPos(position);
//int[] androidColors = getContext().getResources().getIntArray(R.array.androidcolors);
//int randomAndroidColor = androidColors[new Random().nextInt(androidColors.length)];
if (data != null) {
if (viewHolder.name != null & viewHolder.phone != null & viewHolder.msg != null & viewHolder.date_time != null & viewHolder.uid != null) {
viewHolder.name.setText(data.get_name());
viewHolder.name.setTag(data._name);
//name.setTextColor(randomAndroidColor);
viewHolder.phone.setText(data.get_phone());
viewHolder.name.setTag(data._phone);
viewHolder.date_time.setText(data.get_timestamp());
viewHolder.name.setTag(data._timestamp);
viewHolder.msg.setText(data.get_from() + "--> " + data.get_to() + ", " + data.get_date() + ", " + data.get_time());
viewHolder.uid.setText(data.get_uid());
viewHolder.name.setTag(data._uid);
viewHolder.editTremp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewHolder.submitText.setVisibility(View.VISIBLE);
viewHolder.name.setBackground(new ColorDrawable(WHITE));
viewHolder.name.setEnabled(true);
viewHolder.name.setCursorVisible(true);
viewHolder.name.setFocusableInTouchMode(true);
viewHolder.name.setInputType(InputType.TYPE_CLASS_TEXT);
viewHolder.name.requestFocus();
}
});
viewHolder.submitText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
TrempData tremp = getItem(position);
if (ds.getKey().toString().equals(tremp.get_key())) {
viewHolder.name.setEnabled(false);
String new_name = viewHolder.name.getText().toString();
viewHolder.name.setBackground(new ColorDrawable(TRANSPARENT));
viewHolder.submitText.setVisibility(View.GONE);
data.set_name(new_name);
mDatabase.child(ds.getKey().toString()).child("_name").setValue(new_name);
notifyDataSetChanged();
//Toast.makeText(getContext(),"הטרמפ עודכן בהצלחה" + position,Toast.LENGTH_SHORT).show();
break;
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
});
viewHolder.phoneBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + data.get_phone()));
getContext().startActivity(i);
}
});
viewHolder.deleteTremp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
TrempData tremp = getItem(position);
if (ds.getKey().toString().equals(tremp.get_key())) {
mDatabase.child(ds.getKey().toString()).removeValue();
notifyDataSetChanged();
//Toast.makeText(getContext(),"הטרמפ נמחק בהצלחה",Toast.LENGTH_SHORT).show();
break;
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(getContext(),"ישנה בעיה. אנא נסה שוב",Toast.LENGTH_SHORT).show();
}
});
}
});
if(data.get_extras().length() == 0) viewHolder.extra.setVisibility(View.GONE);
viewHolder.extra.setText("הערות:" + " " + data.get_extras());
if(firebaseAuth.getCurrentUser().getUid().equals(viewHolder.uid.getText())){
viewHolder.deleteTremp.setVisibility(View.VISIBLE);
viewHolder.editTremp.setVisibility(View.VISIBLE);
viewHolder.phoneBtn.setVisibility(View.GONE);
viewHolder.sideview.setColorFilter(Color.rgb(255,164,30));
}
else{
viewHolder.submitText.setVisibility(View.GONE);
viewHolder.deleteTremp.setVisibility(View.GONE);
viewHolder.editTremp.setVisibility(View.GONE);
viewHolder.phoneBtn.setVisibility(View.VISIBLE);
viewHolder. sideview.setColorFilter(Color.rgb(176,176,176));
}
}
}
return view;
}
}
当你说“听众”你的意思是OnclickListener或mDatabase.addValueEventListener? – Nauruto
谢谢!它的工作原理..我重新思考事情的流程,如你所说,我所做的就是删除mDatabase.addValueEventListener。 – Nauruto