Java 不能多次更新FireBase数据库子项
我有一个按钮,当您单击它时,它使EditText可编辑,第二个按钮将新字符串发送到数据库,数据库将更新后的字符串返回到listview 它在我第一次编辑时工作正常,但如果我想再次编辑它,它会更新数据库中的值,但在应用程序中,它会在循环中一直从新字符串切换到旧字符串 (例如,我希望能够多次更新“_name”) 这是我的适配器:(注意“editTremp”和“submitText”按钮)Java 不能多次更新FireBase数据库子项,java,android,listview,firebase,Java,Android,Listview,Firebase,我有一个按钮,当您单击它时,它使EditText可编辑,第二个按钮将新字符串发送到数据库,数据库将更新后的字符串返回到listview 它在我第一次编辑时工作正常,但如果我想再次编辑它,它会更新数据库中的值,但在应用程序中,它会在循环中一直从新字符串切换到旧字符串 (例如,我希望能够多次更新“_name”) 这是我的适配器:(注意“editTremp”和“submitText”按钮) 公共类personalZoneAdapter扩展了ArrayAdapter{ 静态类ViewHolderItem
公共类personalZoneAdapter扩展了ArrayAdapter{
静态类ViewHolderItem{
私人文本视图消息,额外,电话,日期时间,uid;
私有文本名;
私有图像按钮deleteTremp、editTremp、phoneBtn、submitText;
私人影像侧视图;
}
私人内部布局资源;
私有FirebaseAuth FirebaseAuth;
私有数据库参考数据库;
公共personalZoneAdapter(上下文上下文、内部布局资源、阵列列表){
超级(上下文、布局资源、列表);
this.layoutResource=layoutResource;
firebaseAuth=firebaseAuth.getInstance();
mDatabase=FirebaseDatabase.getInstance().getReference().child(“Posts”);
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
视图=转换视图;
最终视图持有人项目视图持有人;
如果(视图==null){
最终LayoutFlater充气器=LayoutFlater.from(getContext());
视图=充气机。充气(布局资源,空);
viewHolder=新的ViewHolderItem();
viewHolder.name=(EditText)view.findViewById(R.id.user\u name);
viewHolder.phone=(TextView)view.findViewById(R.id.user\u phone);
viewHolder.date\u time=(TextView)view.findViewById(R.id.user\u date\u time);
viewHolder.msg=(TextView)view.findViewById(R.id.user\u msg);
viewHolder.extra=(TextView)view.findViewById(R.id.user\u extra);
viewHolder.uid=(TextView)view.findViewById(R.id.user\u 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\u btn);
viewHolder.submitText=(ImageButton)view.findViewById(R.id.submitText);
viewHolder.sideview=(ImageView)view.findviewbyd(R.id.user\u image);
view.setTag(viewHolder);
}
否则{
viewHolder=(ViewHolderItem)convertView.getTag();
}
最终TrempData数据=获取项目(位置);
//数据设置位置(位置);
//int[]androidColors=getContext().getResources().getIntArray(R.array.androidColors);
//int randomAndroidColor=androidColors[new Random().nextInt(androidColors.length)];
如果(数据!=null){
if(viewHolder.name!=null&viewHolder.phone!=null&viewHolder.msg!=null&viewHolder.date\u time!=null&viewHolder.uid!=null){
viewHolder.name.setText(data.get_name());
viewHolder.name.setTag(数据名称);
//name.setTextColor(randomandoridcolor);
viewHolder.phone.setText(data.get_phone());
viewHolder.name.setTag(数据。\u电话);
viewHolder.date\u time.setText(data.get\u timestamp());
viewHolder.name.setTag(数据._时间戳);
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.\u-uid);
viewHolder.editTremp.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
viewHolder.submitText.setVisibility(View.VISIBLE);
viewHolder.name.setBackground(新彩色可绘制(白色));
viewHolder.name.setEnabled(true);
viewHolder.name.setCursorVisible(true);
viewHolder.name.setFocusableInTouchMode(true);
viewHolder.name.setInputType(InputType.TYPE\u CLASS\u TEXT);
viewHolder.name.requestFocus();
}
});
viewHolder.submitText.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
mDatabase.addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
对于(DataSnapshot ds:DataSnapshot.getChildren()){
TrempData tremp=getItem(位置);
if(ds.getKey().toString().equals(tremp.get_key())){
viewHolder.name.setEnabled(false);
字符串new_name=viewHolder.name.getText().toString();
viewHolder.name.setBackground(新的彩色可绘制(透明));
viewHolder.submitText.setVisibility(View.GONE);
数据。设置名称(新名称);
mDatabase.child(ds.getKey().toString()).child(“\u name”).setValue(new\u name);
notifyDataSetChanged();
//Toast.makeText(getContext(),“Toast.LENGTH”.show();
打破
}
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;
}
}
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) {
}
});
}
});