0

私はこれを1週間以上働かせようとしてきましたが、私は同じ問題に取り組んでいます。私は具体的に子供pickupの値をクリックリスナーで更新できるようにしようとしています。それは私のrecyclerviewにあります。onClickを使用してFirebaseのキーの下にある特定の子の値を上書きするにはどうすればよいですか?

私はFirebaseからキーを照会する必要があることを知っています。それは私がやり方を知らない部分です。その後、私はここで.setValue()

に設定されていますテキストに値を設定し、私のデータベースツリーである:ここ

  Chat 
    -KgR30muFg-X6xmrqaXA 
    address: "123 ST" 
    confirm: "" 
    description: "Destin: Customer Name :Jhon" 
    phone: "8678876678" 
    pickup: "" 
    title: "[email protected] 02:54:44" 

    -KgR34XayCVHu2Lveg62 
    address: "125 ST" 
    confirm: "" 
    description: "Miramar: Customer Name :Nathan " 
    phone: "929292929" 
    pickup: "" 
    title: "[email protected] 02:55:19" 

は私のコード

public class Home extends AppCompatActivity { 
private RecyclerView recyclerView; 
private DatabaseReference myref; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_home); 
    recyclerView=(RecyclerView)findViewById(R.id.recyclerview); 
    recyclerView.setHasFixedSize(true); 
    recyclerView.setLayoutManager(new LinearLayoutManager(this)); 
    myref= FirebaseDatabase.getInstance().getReference().child("Chat"); 
    FirebaseRecyclerAdapter<Blog,BlogViewHolder> recyclerAdapter=new FirebaseRecyclerAdapter<Blog,BlogViewHolder>(
      Blog.class, 
      R.layout.individual_row, 
      BlogViewHolder.class, 
      myref 
    ) { 
     @Override 
     protected void populateViewHolder(BlogViewHolder viewHolder, Blog model, int position) { 
      viewHolder.setTitle(model.getTitle()); 
      viewHolder.setDescription(model.getDescription()); 
      viewHolder.setAddress(model.getAddress()); 
      viewHolder.setPhone(model.getPhone()); 
      viewHolder.setPickup(model.getPickup()); 
      viewHolder.setConfirm(model.getConfirm()); 

     } 
    }; 
    recyclerView.setAdapter(recyclerAdapter); 
} 
public static class BlogViewHolder extends RecyclerView.ViewHolder { 
    View mView; 
    TextView textView_title; 
    TextView textView_decription; 
    TextView textView_address; 
    TextView textView_phone; 
    TextView textView_pickup; 
    TextView textView_confirm; 
    Button bconfirm; 
    Button bpickup; 



    public BlogViewHolder(View itemView) { 
     super(itemView); 
     mView=itemView; 
     textView_title = (TextView)itemView.findViewById(R.id.title); 
     textView_decription = (TextView) itemView.findViewById(R.id.description); 
     textView_address = (TextView) itemView.findViewById(address); 
     textView_phone = (TextView) itemView.findViewById(phone); 
     textView_pickup = (TextView) itemView.findViewById(pickup); 
     textView_confirm = (TextView) itemView.findViewById(R.id.confirm); 
     bconfirm = (Button) itemView.findViewById(R.id.bcomfirm); 
     bpickup = (Button) itemView.findViewById(R.id.bpickup); 



    } 
    public void setTitle(String title) 
    { 
     textView_title.setText(title+""); 
    } 
    public void setDescription(String description) 
    { 
     textView_decription.setText(description); 
    } 

    public void setAddress(String address) { 
     textView_address.setText(address); 
    } 

    public void setPhone(String phone) { 
     textView_phone.setText(phone); 
    } 
    public void setPickup(String pickup) { 
     textView_pickup.setText(pickup); 
    } 
    public void setConfirm(String confirm) { 
     textView_confirm.setText(confirm); 
    } 
} 
} 

答えて

0

まずあなたがキーを取得する必要があります更新するレコードのコードを取得し、ピックアップ値を更新するボタンのonClickメソッドをコーディングします。

FirebaseRecyclerAdapter<Blog,BlogViewHolder> recyclerAdapter=new FirebaseRecyclerAdapter<Blog,BlogViewHolder>(
      Blog.class, 
      R.layout.individual_row, 
      BlogViewHolder.class, 
      myref){ 
     @Override 
     protected void populateViewHolder(BlogViewHolder viewHolder, Blog model, int position) { 
      viewHolder.setTitle(model.getTitle()); 
      viewHolder.setDescription(model.getDescription()); 
      viewHolder.setAddress(model.getAddress()); 
      viewHolder.setPhone(model.getPhone()); 
      viewHolder.setPickup(model.getPickup()); 
      viewHolder.setConfirm(model.getConfirm()); 
      //Get Record Key 
      final String key = this.getRef(position).getKey(); 

      //Update the Record 
      viewHolder.bpickup.setOnClickListener(new OnClickListener(){ 
       public void onClick(View v) { 
        myref.child(key).child("pickup").setValue("yourValue"); 
       } 
      }; 
     } 
    }; 
    recyclerView.setAdapter(recyclerAdapter); 
+0

エラーが表示され続ける "変数recyclerAdapterが初期化されていない可能性があります。 –

+0

しかし、ここで初期化していますか?FirebaseRecyclerAdapter recyclerAdapter = new FirebaseRecyclerAdapter ..... –

+0

これも私の考えです。それは右のように見えないので、私はさらにアンドロイドスタジオをリセットします –

関連する問題