解除自定义对话框后listview不在刷新片段?
问题描述:
解开对话框后,任何人都可以解决我的ListView不刷新?解除自定义对话框后listview不在刷新片段?
这是我的片段。我设置了适配器和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;
}
}
答
在对话框onClick()
你刚才将更改保存到数据库中,但不会更新与您的适配器的数据。
你的对话框onClick()
应该是这样的:
@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();
}
});
+0
感谢兄弟它现在工作。 –
+0
如果答案有助于您解决问题,请将其标记为接受答案。它会帮助别人。 @palashgour –
答
你从来没有给适配器的任何新数据。 喜欢的东西
reviewratinglist = dataBaseHandler.GetAllData();
myReviewAdapter.setReviewRatings(reviewRatingList);
在
onClick()
应该做的伎俩。
答
不要再次使用适配器类只添加这波纹管
@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();
}
});
你希望人们把时间花在你的问题,所以请让时间花在你的你的问题。请让我们看看[mcve]和[问] – xiawi