2017-09-16 2 views
0

誰もがダイアログボックスをdissmissing後にリフレッシュしていない私の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; 
} 
} 
+0

を追加し、再びアダプタクラスを使用しないでください。それは今働いている仲間[MCVE]を見ていると、[尋ねる] – xiawi

答えて

0

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 –

1

あなたは、アダプタに新しいデータを与えることはありません。あなたのonClick()

reviewratinglist = dataBaseHandler.GetAllData(); 
myReviewAdapter.setReviewRatings(reviewRatingList); 

よう 何かがトリックを行う必要があります。

1

はちょうどあなたは、人々はこのように、あなたの質問に時間を費やすせてください、あなたの問題に時間を過ごしたい、この怒鳴る

@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(); 
      } 
     }); 
関連する問題