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の後にリアルタイムで名前を設定できますか? あまりにも多くのコードをごめんなさい!皆さん、ありがとうございました!