一、使用碎片來進行一個最佳實踐,即我們寫一個新聞的app 1.首先先建立一個新聞類 package com.example.fragmentbestpractice; public class News { private String title; private String content ...
一、使用碎片來進行一個最佳實踐,即我們寫一個新聞的app
1.首先先建立一個新聞類
package com.example.fragmentbestpractice; public class News { private String title; private String content; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } }
2.然後我們設置一個界面,也就是顯示新聞的界面
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/news_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:singleLine="true" android:ellipsize="end" android:textSize="18sp" android:paddingLeft="10dp" android:paddingRight="10dp" android:paddingTop="15dp" android:paddingBottom="15dp" /> </LinearLayout>
這裡面有幾個新的屬性設置是我們之前沒有見到過的,首先來看android:singLine設置為true代表的就是TextView只能單行顯示;android:ellipse用於設定當文本內容超出控制項的寬度的時候,文本的縮略方式,這裡指定成end表示在尾部進行縮略。
3.接下來需要創建一個新聞列表的適配器,讓這個適配器繼承自ArrayAdapter,並將泛型指定為News類,下麵我們新建NewsAdapter
package com.example.fragmentbestpractice; import java.util.List; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.TextView; public class NewsAdapter extends ArrayAdapter<News>{ private int resourceId; public NewsAdapter(Context context,int textViewResourceId,List<News> objects) { super(context,textViewResourceId,objects); resourceId = textViewResourceId; } @Override public View getView(int position,View convertView,ViewGroup parent) { News news = getItem(position); View view; if(convertView == null) { view = LayoutInflater.from(getContext()).inflate(resourceId,null); }else { view = convertView; } TextView newsTitleText = (TextView) view.findViewById(R.id.news_title); newsTitleText.setText(news.getTitle()); return view; } }
可以看出來,在getView()方法中,我們獲取到了相應位置上的News類,並且讓新聞的標題在列表中進行顯示。
4.編寫新聞內容部分的代碼
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:id="@+id/visibility_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:visibility="invisible"> <TextView android:id="@+id/news_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:padding="10dp" android:textSize="20sp" /> <ImageView android:layout_width="match_parent" android:layout_height="1dp" android:scaleType="fitXY" android:src="@drawable/split_line" /> <TextView android:id="@+id/news_content" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:padding="15dp" android:textSize="18sp" /> </LinearLayout> <ImageView android:layout_width="1dp" android:layout_height="match_parent" android:layout_alignParentLeft="true" android:scaleType="fitXY" android:src="@drawable/split_line_vertical" /> </RelativeLayout>
三、源碼:
1.項目地址
https://github.com/ruigege66/Android/tree/master/FragmentBestPractise
2.CSDN:https://blog.csdn.net/weixin_44630050
3.博客園:https://www.cnblogs.com/ruigege0000/
4.歡迎關註微信公眾號:傅里葉變換,個人公眾號,僅用於學習交流,後臺回覆”禮包“,獲取大數據學習資料