Reputation:
Can anybody solve my ListView not refreshing after dissmissing a dialog box?
This is my Fragment. I set adapter and ListView.
public class About extends Fragment {
MyRatingAdapter myRatingAdapter;
ListView listView;
List<ReviewRatingBean> reviewratinglist = new ArrayList<>();
Button buttonsubmit;
EditText editText_name, editText_text;
RatingBar ratingBar;
DataBaseHandler dataBaseHandler;
Button btn_add_reviews;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable final Bundle savedInstanceState) {
//returning our layout file
//change R.layout.yourlayoutfilename for each of your fragments
View view = inflater.inflate(R.layout.about_fragment, container, false);
// ratingbar1=(RatingBar)view.findViewById(R.id.ratingBar1);
// button=(Button)view.findViewById(R.id.button1);
dataBaseHandler = new DataBaseHandler(getActivity());
listView = (ListView) view.findViewById(R.id.list_item);
reviewratinglist = dataBaseHandler.GetAllData();
myRatingAdapter = new MyRatingAdapter(getActivity(), reviewratinglist);
listView.setAdapter(myRatingAdapter);
btn_add_reviews = (Button)view.findViewById(R.id.btn_addreviews);
btn_add_reviews.setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
@Override
public void onClick(View view) {
LayoutInflater inflater = getLayoutInflater(savedInstanceState);
View dialoglayout = inflater.inflate(R.layout.activity_review_rating, null);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setView(dialoglayout);
final AlertDialog alertDialog = builder.create();
buttonsubmit = (Button)dialoglayout.findViewById(R.id.btn_submit);
editText_name = (EditText)dialoglayout.findViewById(R.id.et_name);
editText_text = (EditText)dialoglayout.findViewById(R.id.et_text);
ratingBar = (RatingBar)dialoglayout.findViewById(R.id.rating_bar);
ratingBar.setIsIndicator(false);
buttonsubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ReviewRatingBean reviewRatingBean = new ReviewRatingBean();
String name = editText_name.getText().toString();
float rate = ratingBar.getRating();
String text = editText_text.getText().toString();
reviewRatingBean.setName(name);
reviewRatingBean.setRating(rate);
reviewRatingBean.setTextreview(text);
dataBaseHandler.addData(reviewRatingBean);
Toast.makeText(getContext(), "Thanks For Your FeedBack", Toast.LENGTH_SHORT).show();
myRatingAdapter.notifyDataSetChanged(); here i have try to notify the base adpater to refreshing a list view
listView.setAdapter(myRatingAdapter);
alertDialog.dismiss();
}
});
alertDialog.show();
}
});
return view;
}
}
Upvotes: 0
Views: 143
Reputation: 22018
You never give the adapter any new data. Something like
reviewratinglist = dataBaseHandler.GetAllData();
myReviewAdapter.setReviewRatings(reviewRatingList);
in your onClick()
should do the trick.
Upvotes: 1
Reputation: 486
Don't Use again Adapter class just add this bellow
@Override
public void onClick(View view) {
ReviewRatingBean reviewRatingBean = new ReviewRatingBean();
String name = editText_name.getText().toString();
float rate = ratingBar.getRating();
String text = editText_text.getText().toString();
reviewRatingBean.setName(name);
reviewRatingBean.setRating(rate);
reviewRatingBean.setTextreview(text);
dataBaseHandler.addData(reviewRatingBean);
Toast.makeText(getContext(), "Thanks For Your FeedBack", Toast.LENGTH_SHORT).show();
dataBaseHandler.GetAllData(); // Add this line
myRatingAdapter.notifyDataSetChanged(); // just use notifiydataset only
alertDialog.dismiss();
}
});
Upvotes: 1
Reputation: 13617
In your dialog onClick()
you have just saved the changes to the database, but not updated with your adapter data.
Your dialog onClick()
should be like this:
@Override
public void onClick(View view) {
ReviewRatingBean reviewRatingBean = new ReviewRatingBean();
String name = editText_name.getText().toString();
float rate = ratingBar.getRating();
String text = editText_text.getText().toString();
reviewRatingBean.setName(name);
reviewRatingBean.setRating(rate);
reviewRatingBean.setTextreview(text);
dataBaseHandler.addData(reviewRatingBean);
Toast.makeText(getContext(), "Thanks For Your FeedBack", Toast.LENGTH_SHORT).show();
reviewratinglist.add(reviewRatingBean) // add this line
myRatingAdapter.notifyDataSetChanged(); here i have try to notify the base adpater to refreshing a list view
listView.setAdapter(myRatingAdapter);
alertDialog.dismiss();
}
});
Upvotes: 0