2016-09-20 2 views
0

こんにちは私はRecyclerViewに問題があります。 私はRecyclerViewの行レイアウトを持ち、interfaceは私のボタンをクリックしてアクティビティを持ち、dbに更新名を要求します。Refresh要素がRecyclerViewで修正されました

私は私のrow_layoutで持っている:

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:padding="10dp" 
    android:orientation="vertical"> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/name" 

        /> 
    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/change_name" 
     android:text="@string/change" 
    /> 
</RelativeLayout> 

そして、私はボタンをクリックしますが、DBにしてホルダーに名前を変更する必要があることを私のアダプタを持っています。

アダプタ

public class ListAlertsAdapter extends RecyclerView.Adapter<ListAlertsAdapter.MyViewHolder> { 
    private JSONArray dataSource; 
     private LayoutInflater inflater; 
     private AdapterCallback mAdapterCallback; 
     public interface AdapterCallback { 

      void handleName(View caller, JSONObject obj, JSONArray data, int position); 

     } 
    public ListAlertsAdapter(JSONArray dataArgs, Context context){ 
      dataSource = dataArgs; 
      inflater= LayoutInflater.from(context); 
      this.mAdapterCallback = ((AdapterCallback) context); 
     } 
     @Override 
     public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
      View view = inflater.inflate(R.layout.layout_row,parent,false); 
      MyViewHolder holder=new MyViewHolder(view, new ListAlertsAdapter.MyViewHolder.IMyViewHolderClicks() { 

       public void handleName(View caller, int position) { 
        JSONObject itemClicked; 
        try { 
         itemClicked = dataSource.getJSONObject(position); 
         mAdapterCallback.handleName(caller, itemClicked, dataSource, position); 
         /** maybe in this point i could modify itemClicked and notifyDataSetChanged() but not working */ 

       itemClicked.put("name","exampleName Marco"); 
       notifyDataSetChanged(); 

        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
       } 
      }); 
      return holder; 
     } 
    public void onBindViewHolder(MyViewHolder holder, int position) { 
     try { 
       object = dataSource.getJSONObject(position); 
       holder.name.setText(object.getString("name")); 
     }catch (JSONException e) { 
         e.printStackTrace(); 
        } 

    } 
    public static class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener 
    { 
Button handle_name; 
public IMyViewHolderClicks mListener; 
public MyViewHolder(View itemView, IMyViewHolderClicks listener) { 
    super(itemView); 
      mListener = listener; 
    handle_name=(Button)itemView.findViewById(R.id.change_name); 
      handle_name.setOnClickListener(this); 
} 
@Override 
     public void onClick(View v) { 
     mListener.handleName(v, position); 
     } 
} 
public interface IMyViewHolderClicks { 
    public void handleName(View caller, int position); 
} 

私は私のボタンをクリックすると、だから私は、一例でDBにvolleyrequestと更新名前を作るこの

public void handleName(View caller, final JSONObject obj, JSONArray data, int position) { 
    SystemService.getInstance().handleName("example name"); 
} 

同様私の活動で関数を呼び出します"Marco"なので、私の質問は、クリックしたボタンを隠すことができ、コールdbの後にリアルタイムで名前を設定できますか? あまりにも多くのコードをごめんなさい!皆さん、ありがとうございました!

答えて

0

アダプターの各ボタンが見えるようにリストを作成しようとします。ボタンをクリックした後、クリックした位置のボタンの表示をView.GONEに変更し、アダプタをリフレッシュします。

関連する問題