2017-04-12 1 views
0

어떻게 조각도에서 목록보기를 새로 고칠 수 있습니까 ?? 이제 키보드 입력이 사라진 경우에만 listview가 새로 고쳐집니다.
리스트 뷰를 새로 고치려면 어떻게해야합니까? 이것은 뷰 페이지가 생성되는 주요 활동입니다.목록 뷰 새로 고침 (조각 및 뷰 페이지 내에서)

 ```java 

     public class Login extends AppCompatActivity { 

      private FirebaseAuth mFirebaseAuth; 
      private FirebaseAuth.AuthStateListener mAuthStateListener; 

      public static final int RC_SIGN_IN = 1; 

      private TabLayout tabLayout; 
      private ViewPager viewPager; 
      TabPagerAdapter pagerAdapter; 


      @Override 
      protected void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.activity_login);    

       mFirebaseAuth = FirebaseAuth.getInstance(); 
       mAuthStateListener = new FirebaseAuth.AuthStateListener() { 
        @Override 
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
         FirebaseUser user = firebaseAuth.getCurrentUser(); 
         if (user != null) { 

         } else { 
          startActivityForResult(
            AuthUI.getInstance() 
              .createSignInIntentBuilder() 
              .setTheme(R.style.FullscreenTheme) 
              .setIsSmartLockEnabled(false) 
              .setProviders(
                AuthUI.EMAIL_PROVIDER, 
                AuthUI.GOOGLE_PROVIDER, 
                AuthUI.FACEBOOK_PROVIDER, 
                AuthUI.TWITTER_PROVIDER) 
              .build(), 
            RC_SIGN_IN); 
         } 
        } 
       }; 


       tabLayout = (TabLayout) findViewById(R.id.tabLayout); 
       tabLayout.addTab(tabLayout.newTab().setText("Category")); 
       tabLayout.addTab(tabLayout.newTab().setText("Search")); 
       tabLayout.addTab(tabLayout.newTab().setText("My page")); 
       tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 

       viewPager = (ViewPager) findViewById(pager); 
       pagerAdapter = new TabPagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount()); 

       viewPager.setAdapter(pagerAdapter); 
       viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 


       tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
        @Override 
        public void onTabSelected(TabLayout.Tab tab) { 
         viewPager.setCurrentItem(tab.getPosition()); 
        } 

        @Override 
        public void onTabUnselected(TabLayout.Tab tab) { 

        } 

        @Override 
        public void onTabReselected(TabLayout.Tab tab) { 

        } 
       }); 

      } 


      @Override 
      protected void onPause() { 
       super.onPause(); 
       if (mAuthStateListener != null) { 
        mFirebaseAuth.removeAuthStateListener(mAuthStateListener); 
       } 
      } 

      @Override 
      protected void onResume() { 
       super.onResume(); 
       mFirebaseAuth.addAuthStateListener(mAuthStateListener); 
      } 

     } 

     ``` 

여기서 listview가 만들어집니다. listview를 새로 고치려면 여기에서 뭔가를해야합니까?

```java 
    public class SearchFragment extends android.support.v4.app.Fragment { 
     FirebaseDatabase mFirebaseDatabase; 


     public SearchFragment() { 
      // Required empty public constructor 
     } 

     Spinner spinner; 
     String[] categories = {"Family", "Love", "Friends", "Job", "Happiness", "Encouragement"}; 
     Context mCotext; 
     String category; 
     EditText editText; 
     String searchTarget; 
     Button searchBtn; 
     ListView listView; 
     private PostAdapter mPostAdapter; 
     List<PostItem> postItems; 
     InputMethodManager inputMethodManager; 


     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
           Bundle savedInstanceState) { 

      View view = inflater.inflate(R.layout.fragment_search, null); 

      mCotext = getActivity().getApplicationContext(); 

      // spinner part -> get target search category 
      spinner = (Spinner) view.findViewById(R.id.spinner); 
      ArrayAdapter<String> adapter = new ArrayAdapter<String>(mCotext, android.R.layout.simple_spinner_dropdown_item, categories); 
      spinner.setAdapter(adapter); 

      spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
       @Override 
       public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
        category = categories[position]; 
       } 

       @Override 
       public void onNothingSelected(AdapterView<?> parent) { 
        category = categories[0]; 
       } 
      }); 


      editText = (EditText) view.findViewById(R.id.searchBox); 


      searchBtn = (Button) view.findViewById(R.id.searchBtn); 
      searchBtn.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        mPostAdapter.clear(); //리스트 어답터를 비워준다 
        searchTarget = editText.getText().toString(); 
        serach(category, searchTarget); 
        mPostAdapter.notifyDataSetChanged(); 

        //downKeyboard(mCotext, editText); 
       } 
      }); 

      listView = (ListView) view.findViewById(R.id.list); 
      postItems = new ArrayList<>(); 
      mPostAdapter = new PostAdapter(mCotext, R.layout.post_item, postItems); 
      listView.setAdapter(mPostAdapter); 

      return view; 
     } 

     private void serach(String category, final String target) { 

      if (target.trim().equals("")) { 
       Toast.makeText(mCotext, "Please type something to search", Toast.LENGTH_LONG).show(); 
      } else { 
       mFirebaseDatabase = FirebaseDatabase.getInstance(); 

       Query postSearchQuery = mFirebaseDatabase.getReference().child(category).limitToFirst(30); 

       postSearchQuery.addChildEventListener(new ChildEventListener() { 
        @Override 
        public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
         for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) { 
          if (postSnapshot.getValue().toString().contains(target)) { 
           PostItem post = dataSnapshot.getValue(PostItem.class); 
           mPostAdapter.insert(post, 0); 
          } 
         } 
        } 

        @Override 
        public void onChildChanged(DataSnapshot dataSnapshot, String s) { 
        } 

        @Override 
        public void onChildRemoved(DataSnapshot dataSnapshot) { 

        } 

        @Override 
        public void onChildMoved(DataSnapshot dataSnapshot, String s) { 

        } 

        @Override 
        public void onCancelled(DatabaseError databaseError) { 

        } 
       }); 

      } 


     } 


     public static void downKeyboard(Context context, EditText editText) { 
      InputMethodManager mInputMethodManager = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); 
      mInputMethodManager.hideSoftInputFromWindow(editText.getWindowToken(), 0); 

     } 




    } 

    ``` 

답변

0

아마 같은 :

adapter.notifyDataSetChanged(); 
+0

감사합니다! 나는 그것을 시도했다. 그러나 단편은 작동하지 않는다. –

관련 문제