java Fragment && RecyclerView
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java Fragment && RecyclerView相关的知识,希望对你有一定的参考价值。
public class RecyclerViewActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recycler_view);
// 1. get a reference to recyclerView
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
//Database
ItemData itemsData[] = {
new ItemData("HELP", android.R.drawable.ic_menu_help),
new ItemData("Delete", android.R.drawable.ic_menu_delete),
new ItemData("Favorite", android.R.drawable.ic_menu_preferences),
new ItemData("Like", android.R.drawable.ic_menu_call),
new ItemData("Rating", android.R.drawable.ic_menu_camera),
new ItemData("HELP", android.R.drawable.ic_menu_help),
new ItemData("Delete", android.R.drawable.ic_menu_delete),
new ItemData("Favorite", android.R.drawable.ic_menu_preferences),
new ItemData("Like", android.R.drawable.ic_menu_call),
new ItemData("Rating", android.R.drawable.ic_menu_camera)};
// 2. set layoutManger
recyclerView.setLayoutManager(new LinearLayoutManager(this));
// 3. create an adapter
RecyclerViewAdapter mAdapter = new RecyclerViewAdapter(itemsData);
// 4. set adapter
recyclerView.setAdapter(mAdapter);
// 5. set item animator to DefaultAnimator
recyclerView.setItemAnimator(new DefaultItemAnimator());
}
}
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {
//
private ItemData[] itemsData;
//
public RecyclerViewAdapter(ItemData[] itemsData){
this.itemsData = itemsData;
}
//
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//
View itemLayoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.activity_item_data, null);
//
ViewHolder viewHolder = new ViewHolder(itemLayoutView);
return viewHolder;
}
//
@Override
public void onBindViewHolder(ViewHolder viewHolder, int position){
//
viewHolder.txtViewTitle.setText(itemsData[position].getTitle());
viewHolder.imgViewIcon.setImageResource(itemsData[position].getImageUrl());
}
//
public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public TextView txtViewTitle;
public ImageView imgViewIcon;
public ViewHolder(View itemLayoutView){
super(itemLayoutView);
itemLayoutView.setOnClickListener(this);
txtViewTitle = (TextView) itemLayoutView.findViewById(R.id.item_title);
imgViewIcon = (ImageView) itemLayoutView.findViewById(R.id.item_icon);
}
@Override
public void onClick(View view){
Toast.makeText(view.getContext(), "position = " + getPosition(), Toast.LENGTH_SHORT).show();
}
}
//
@Override
public int getItemCount(){
return itemsData.length;
}
}
## RecyclerView
[http://hmkcode.com/android-simple-recyclerview-widget-example/]
![](https://developer.android.com/training/material/images/RecyclerView.png)
1.an Adapter: extend the RecyclerView.Adapter class
2.a LayoutManager: shows the items in a vertical or horizontal scrolling list. To create a custom layout, you extend the RecyclerView.LayoutManager
![](http://hmkcode.com/wp-content/uploads/2014/07/android-recyclerview-item-layout.png)
*******
####XML屬性
##### clipToPadding
Listview的一个强大的属性:android:clipToPadding=false,默认android:clipToPadding=true的。
clipToPadding:
就是说控件的绘制区域是否在padding里面的,true的情况下如果你设置了padding那么绘制的区
域就往里缩,假设 内部有个属性设置了PaddingTop但是滑动的时候就忽视paddingTop 则使用该属性如设置android:clipToPadding=false,如下:
<ListView
android:id="@+id/list"
android:clipToPadding="false"
android:paddingTop="50dip"
android:layout_width="match_parent"
android:layout_height="match_parent">
如果你使用的是RecyclerView,也是有这个属性的。
#####Java Classes
1.MainActivity.java
2.MyAdapter.java
3.ItemData.java
#####Layout
1.activity_main.xml
2.item_layout.xml
## Fragment
[http://litotom.com/2016/06/02/android-fragment-lifecycle/]
[https://litotom.com/2016/06/27/android-fragment-2/]
![](http://litotom.com/wp-content/uploads/2016/06/A4449-1.png)
##### Fragment的生命週期
每個Fragment擁有自己的生命週期,也就是說,在特定的狀況會自動呼叫特定的方法,供使用者依功能需求覆寫這些方法,加入必要的程式碼。依照Fragment產生與出現的順序會執行的方法描述如下:
產生階段(未出現在畫面上)
onAttach方法
當Fragment被加到某個Activity畫面中時,會自動呼叫此方法。
onCreate方法
Fragment被建立時會自動呼叫此方法,可加入初始化元件或資料的程式碼。
onCreateView方法
將在畫面中第一次顯示Fragment時會自動呼叫此方法,必須回傳Fragment畫面的View元件,設計時,請使用方法中的LayoutInflater物件,在此方法中產生畫面元件並回傳。
onActivityCreated方法
當加入本Fragment的Activity被建立時,該Activity的onCreate方法執行完成後,會自動執行此方法。執行完此方法後,Fragment才出現在畫面上。
準備階段(出現在畫面上)
onStart方法
當Fragment出現在畫面中時先執行此方法。
onResume方法
執行完onStart方法後,再自動執行本方法。完成後即在畫面中與使用者互動。
暫停階段
當使用者按下返回鍵,或是程式中將Fragment自某個Activity中移除時,會自動執行以下方法:
onPause方法
進入暫停前第一個執行的方法。
onStop方法
執行完onPause方法後,自動執行本方法。
onDestroyView方法
此時Fragment已不在畫面中,呼叫此方法。
onDestroy方法
當Fragment要被清除之前,會執行此方法。
onDetach方法
與當初被加入的Activity卸載時,會自動執行此方法。
public class ItemData {
//
private String title;
private int imageUrl;
//
public ItemData(String title,int imageUrl){
this.title = title;
this.imageUrl = imageUrl;
}
//getter
public String getTitle(){
return title;
}
public Integer getImageUrl(){
return imageUrl;
}
//setter
public void setTitle(){
this.title = title;
}
public void setImageUrl(){
this.imageUrl = imageUrl;
}
}
以上是关于java Fragment && RecyclerView的主要内容,如果未能解决你的问题,请参考以下文章
jmeterInclude Controller控件&Test Fragment的使用
将 <fragment> 标签替换为 FragmentContainerView
File Templates for web.xml & web-fragment.xml (Servlet 2.3, 2.4, 2.5 + 3.0)