ADD week 5
This commit is contained in:
		
							
								
								
									
										243
									
								
								02-Easy5/E5/sources/androidx/fragment/app/ListFragment.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										243
									
								
								02-Easy5/E5/sources/androidx/fragment/app/ListFragment.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,243 @@ | ||||
| package androidx.fragment.app; | ||||
|  | ||||
| import android.R; | ||||
| import android.content.Context; | ||||
| import android.os.Bundle; | ||||
| import android.os.Handler; | ||||
| import android.view.LayoutInflater; | ||||
| import android.view.View; | ||||
| import android.view.ViewGroup; | ||||
| import android.view.animation.AnimationUtils; | ||||
| import android.widget.AdapterView; | ||||
| import android.widget.FrameLayout; | ||||
| import android.widget.LinearLayout; | ||||
| import android.widget.ListAdapter; | ||||
| import android.widget.ListView; | ||||
| import android.widget.ProgressBar; | ||||
| import android.widget.TextView; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| public class ListFragment extends Fragment { | ||||
|     static final int INTERNAL_EMPTY_ID = 16711681; | ||||
|     static final int INTERNAL_LIST_CONTAINER_ID = 16711683; | ||||
|     static final int INTERNAL_PROGRESS_CONTAINER_ID = 16711682; | ||||
|     ListAdapter mAdapter; | ||||
|     CharSequence mEmptyText; | ||||
|     View mEmptyView; | ||||
|     ListView mList; | ||||
|     View mListContainer; | ||||
|     boolean mListShown; | ||||
|     View mProgressContainer; | ||||
|     TextView mStandardEmptyView; | ||||
|     private final Handler mHandler = new Handler(); | ||||
|     private final Runnable mRequestFocus = new Runnable() { // from class: androidx.fragment.app.ListFragment.1 | ||||
|         @Override // java.lang.Runnable | ||||
|         public void run() { | ||||
|             ListFragment.this.mList.focusableViewAvailable(ListFragment.this.mList); | ||||
|         } | ||||
|     }; | ||||
|     private final AdapterView.OnItemClickListener mOnClickListener = new AdapterView.OnItemClickListener() { // from class: androidx.fragment.app.ListFragment.2 | ||||
|         @Override // android.widget.AdapterView.OnItemClickListener | ||||
|         public void onItemClick(AdapterView<?> adapterView, View view, int i, long j) { | ||||
|             ListFragment.this.onListItemClick((ListView) adapterView, view, i, j); | ||||
|         } | ||||
|     }; | ||||
|  | ||||
|     public ListAdapter getListAdapter() { | ||||
|         return this.mAdapter; | ||||
|     } | ||||
|  | ||||
|     public void onListItemClick(ListView listView, View view, int i, long j) { | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.fragment.app.Fragment | ||||
|     public View onCreateView(LayoutInflater layoutInflater, ViewGroup viewGroup, Bundle bundle) { | ||||
|         Context requireContext = requireContext(); | ||||
|         FrameLayout frameLayout = new FrameLayout(requireContext); | ||||
|         LinearLayout linearLayout = new LinearLayout(requireContext); | ||||
|         linearLayout.setId(INTERNAL_PROGRESS_CONTAINER_ID); | ||||
|         linearLayout.setOrientation(1); | ||||
|         linearLayout.setVisibility(8); | ||||
|         linearLayout.setGravity(17); | ||||
|         linearLayout.addView(new ProgressBar(requireContext, null, R.attr.progressBarStyleLarge), new FrameLayout.LayoutParams(-2, -2)); | ||||
|         frameLayout.addView(linearLayout, new FrameLayout.LayoutParams(-1, -1)); | ||||
|         FrameLayout frameLayout2 = new FrameLayout(requireContext); | ||||
|         frameLayout2.setId(INTERNAL_LIST_CONTAINER_ID); | ||||
|         TextView textView = new TextView(requireContext); | ||||
|         textView.setId(INTERNAL_EMPTY_ID); | ||||
|         textView.setGravity(17); | ||||
|         frameLayout2.addView(textView, new FrameLayout.LayoutParams(-1, -1)); | ||||
|         ListView listView = new ListView(requireContext); | ||||
|         listView.setId(R.id.list); | ||||
|         listView.setDrawSelectorOnTop(false); | ||||
|         frameLayout2.addView(listView, new FrameLayout.LayoutParams(-1, -1)); | ||||
|         frameLayout.addView(frameLayout2, new FrameLayout.LayoutParams(-1, -1)); | ||||
|         frameLayout.setLayoutParams(new FrameLayout.LayoutParams(-1, -1)); | ||||
|         return frameLayout; | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.fragment.app.Fragment | ||||
|     public void onViewCreated(View view, Bundle bundle) { | ||||
|         super.onViewCreated(view, bundle); | ||||
|         ensureList(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.fragment.app.Fragment | ||||
|     public void onDestroyView() { | ||||
|         this.mHandler.removeCallbacks(this.mRequestFocus); | ||||
|         this.mList = null; | ||||
|         this.mListShown = false; | ||||
|         this.mListContainer = null; | ||||
|         this.mProgressContainer = null; | ||||
|         this.mEmptyView = null; | ||||
|         this.mStandardEmptyView = null; | ||||
|         super.onDestroyView(); | ||||
|     } | ||||
|  | ||||
|     public void setListAdapter(ListAdapter listAdapter) { | ||||
|         boolean z = this.mAdapter != null; | ||||
|         this.mAdapter = listAdapter; | ||||
|         ListView listView = this.mList; | ||||
|         if (listView != null) { | ||||
|             listView.setAdapter(listAdapter); | ||||
|             if (this.mListShown || z) { | ||||
|                 return; | ||||
|             } | ||||
|             setListShown(true, requireView().getWindowToken() != null); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public void setSelection(int i) { | ||||
|         ensureList(); | ||||
|         this.mList.setSelection(i); | ||||
|     } | ||||
|  | ||||
|     public int getSelectedItemPosition() { | ||||
|         ensureList(); | ||||
|         return this.mList.getSelectedItemPosition(); | ||||
|     } | ||||
|  | ||||
|     public long getSelectedItemId() { | ||||
|         ensureList(); | ||||
|         return this.mList.getSelectedItemId(); | ||||
|     } | ||||
|  | ||||
|     public ListView getListView() { | ||||
|         ensureList(); | ||||
|         return this.mList; | ||||
|     } | ||||
|  | ||||
|     public void setEmptyText(CharSequence charSequence) { | ||||
|         ensureList(); | ||||
|         TextView textView = this.mStandardEmptyView; | ||||
|         if (textView == null) { | ||||
|             throw new IllegalStateException("Can't be used with a custom content view"); | ||||
|         } | ||||
|         textView.setText(charSequence); | ||||
|         if (this.mEmptyText == null) { | ||||
|             this.mList.setEmptyView(this.mStandardEmptyView); | ||||
|         } | ||||
|         this.mEmptyText = charSequence; | ||||
|     } | ||||
|  | ||||
|     public void setListShown(boolean z) { | ||||
|         setListShown(z, true); | ||||
|     } | ||||
|  | ||||
|     public void setListShownNoAnimation(boolean z) { | ||||
|         setListShown(z, false); | ||||
|     } | ||||
|  | ||||
|     private void setListShown(boolean z, boolean z2) { | ||||
|         ensureList(); | ||||
|         View view = this.mProgressContainer; | ||||
|         if (view == null) { | ||||
|             throw new IllegalStateException("Can't be used with a custom content view"); | ||||
|         } | ||||
|         if (this.mListShown == z) { | ||||
|             return; | ||||
|         } | ||||
|         this.mListShown = z; | ||||
|         if (z) { | ||||
|             if (z2) { | ||||
|                 view.startAnimation(AnimationUtils.loadAnimation(getContext(), R.anim.fade_out)); | ||||
|                 this.mListContainer.startAnimation(AnimationUtils.loadAnimation(getContext(), R.anim.fade_in)); | ||||
|             } else { | ||||
|                 view.clearAnimation(); | ||||
|                 this.mListContainer.clearAnimation(); | ||||
|             } | ||||
|             this.mProgressContainer.setVisibility(8); | ||||
|             this.mListContainer.setVisibility(0); | ||||
|             return; | ||||
|         } | ||||
|         if (z2) { | ||||
|             view.startAnimation(AnimationUtils.loadAnimation(getContext(), R.anim.fade_in)); | ||||
|             this.mListContainer.startAnimation(AnimationUtils.loadAnimation(getContext(), R.anim.fade_out)); | ||||
|         } else { | ||||
|             view.clearAnimation(); | ||||
|             this.mListContainer.clearAnimation(); | ||||
|         } | ||||
|         this.mProgressContainer.setVisibility(0); | ||||
|         this.mListContainer.setVisibility(8); | ||||
|     } | ||||
|  | ||||
|     public final ListAdapter requireListAdapter() { | ||||
|         ListAdapter listAdapter = getListAdapter(); | ||||
|         if (listAdapter != null) { | ||||
|             return listAdapter; | ||||
|         } | ||||
|         throw new IllegalStateException("ListFragment " + this + " does not have a ListAdapter."); | ||||
|     } | ||||
|  | ||||
|     private void ensureList() { | ||||
|         if (this.mList != null) { | ||||
|             return; | ||||
|         } | ||||
|         View view = getView(); | ||||
|         if (view == null) { | ||||
|             throw new IllegalStateException("Content view not yet created"); | ||||
|         } | ||||
|         if (view instanceof ListView) { | ||||
|             this.mList = (ListView) view; | ||||
|         } else { | ||||
|             TextView textView = (TextView) view.findViewById(INTERNAL_EMPTY_ID); | ||||
|             this.mStandardEmptyView = textView; | ||||
|             if (textView == null) { | ||||
|                 this.mEmptyView = view.findViewById(R.id.empty); | ||||
|             } else { | ||||
|                 textView.setVisibility(8); | ||||
|             } | ||||
|             this.mProgressContainer = view.findViewById(INTERNAL_PROGRESS_CONTAINER_ID); | ||||
|             this.mListContainer = view.findViewById(INTERNAL_LIST_CONTAINER_ID); | ||||
|             View findViewById = view.findViewById(R.id.list); | ||||
|             if (!(findViewById instanceof ListView)) { | ||||
|                 if (findViewById == null) { | ||||
|                     throw new RuntimeException("Your content must have a ListView whose id attribute is 'android.R.id.list'"); | ||||
|                 } | ||||
|                 throw new RuntimeException("Content has view with id attribute 'android.R.id.list' that is not a ListView class"); | ||||
|             } | ||||
|             ListView listView = (ListView) findViewById; | ||||
|             this.mList = listView; | ||||
|             View view2 = this.mEmptyView; | ||||
|             if (view2 != null) { | ||||
|                 listView.setEmptyView(view2); | ||||
|             } else { | ||||
|                 CharSequence charSequence = this.mEmptyText; | ||||
|                 if (charSequence != null) { | ||||
|                     this.mStandardEmptyView.setText(charSequence); | ||||
|                     this.mList.setEmptyView(this.mStandardEmptyView); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         this.mListShown = true; | ||||
|         this.mList.setOnItemClickListener(this.mOnClickListener); | ||||
|         ListAdapter listAdapter = this.mAdapter; | ||||
|         if (listAdapter != null) { | ||||
|             this.mAdapter = null; | ||||
|             setListAdapter(listAdapter); | ||||
|         } else if (this.mProgressContainer != null) { | ||||
|             setListShown(false, false); | ||||
|         } | ||||
|         this.mHandler.post(this.mRequestFocus); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user