ListView 實現新聞案列(大神可以走了,本人新手):
第一步沒啥好說的:創建佈局頁面,代碼走起:
<?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">
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
</LinearLayout>
第二步:佈局創建好了 我們接下來去MainActivity中初始化listview
ListView listview = (ListView) findViewById(R.id.listview);
我們最好把listView設爲全局變量,如下:
private ListView listview ;
listview = (ListView) findViewById(R.id.listview);
這樣我們想用listView的時候可以直接用。
listVie的初始化已經好了,接下來纔是重點:
1.首先創建三個包,分別Adaper包,mybean包和Utis包,分別存放適配器,封裝數據類和集合類,(因爲要模仿本地數據所以要把數據封裝到集合中)。
2.mybean包下創建Mybean類
public class MyBean {
private String item;//要顯示的條目
private String des;//要顯示的內容
public String url;//點擊條目跳轉的地址
private Drawable icon;//顯示的圖片
public String getItem() {
return item;
}
public void setItem(String item) {
this.item = item;
}
public String getDes() {
return des;
}
public void setDes(String des) {
this.des = des;
}
public Drawable getIcon() {
return icon;
}
public void setIcon(Drawable icon) {
this.icon = icon;
}
}
----------
3.在adaper包下創建MyAdaper類:
public class myAdaper extends BaseAdapter {
private final ArrayList<MyBean> list;//把數據存到集合中
private final Context context;//
public myAdaper(Context context,ArrayList<MyBean> list) {
//初始化MyBean的數據
this.list = list;
this.context = context;
}
@Override
public int getCount() {
return list.size();//要顯示的天目數量,可以自己手動寫如:return 10;這樣在手機上只能顯示10條,
}
@Override
public Object getItem(int position) {
return list.get(position);//墨認是null,獲取點擊天目的位置,
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;//是一個模板
if (convertView != null) {
view = convertView;
} else {
view = View.inflate(context, R.layout.activity_item, null);
//這裏還要創建一個佈局文件,以爲我們藥設置數據
}
TextView tv_01 = (TextView) view.findViewById(R.id.tv_01);
TextView tv_02 = (TextView) view.findViewById(R.id.tv_02);
ImageView im_01 = (ImageView) view.findViewById(R.id.im_01);
MyBean myBean = list.get(position);
tv_01.setText(myBean.getItem());
tv_02.setText(myBean.getDes());
im_01.setImageDrawable(myBean.getIcon());
return view;
}
}
創建第二個佈局文件
<?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:gravity="center_vertical"
android:padding="10dp"
>
<ImageView
android:id="@+id/im_01"
android:layout_width="68dp"
android:layout_height="68dp"
android:src="@color/colorPrimaryDark" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:maxLines="1"
android:id="@+id/tv_01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="item"
android:textSize="18dp" />
<TextView
android:maxLines="3"
android:id="@+id/tv_02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="要顯示的內容" />
</LinearLayout>
</LinearLayout>
4.在Utis下創建NewsUtis類
因爲沒有聯網所以自己誰便編寫一些數據當演示
public class NewsUtis {
public static ArrayList<MyBean> getAllNews(Context context) {
ArrayList<MyBean> list = new ArrayList<>();
for (int i = 0; i < 100; i++) {
MyBean myBean = new MyBean();
myBean.setItem("最後一批環保督察組進駐8省 多語種接收舉報:");
myBean.setDes("昨日下午,中央第六環境保護督察組進駐西藏自治區,至此,第四批即最後一批8箇中央環境保護督察組全部實現督察進駐。8箇中央環境保護督察組分別負責對8個省份," +
"即吉林、浙江、山東、海南" +
"、四川、西藏、青海、新疆(含兵團)開展環境保護督察工作。");
myBean.setIcon(context.getResources().getDrawable(R.drawable.ic_launcher));
myBean.url="http://news.china.com.cn/2017-08/16/content_41417171.htm";
list.add(myBean);
MyBean myBean1 = new MyBean();
myBean1.setItem("南方暴雨又至 今年汛期這些人抗洪不力被問責");
myBean1.setDes("中新網北京8月16日電(記者闞楓)近期,新一輪強降雨再度襲擊南方多地,部分地區出現暴雨洪澇災害。今年汛期,多地發文強調防汛救災期間的工作紀律,嚴懲救災推諉扯皮、擅離職守、" +
"瞞報遲報等行爲,一些幹部也因汛期擅離職守、頂風違紀等原因被問責。");
myBean1.setIcon(context.getResources().getDrawable(R.drawable.icon2));
myBean1.url="http://news.china.com.cn/2017-08/16/content_41417179.htm";
list.add(myBean1);
MyBean myBean2 = new MyBean();
myBean2.setItem("公安局");
myBean2.setDes("多部門聯手打擊傳銷,這些傳銷行騙套路需警惕");
myBean2.setIcon(context.getResources().getDrawable(R.drawable.icon));
myBean2.url="http://www.baidu.com";
list.add(myBean2);
}
return list;
}
}
最後再MainActivity寫入以下代碼:
public class MainActivity extends AppCompatActivity {
private Context mContext;
protected ListView listview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main01);
mContext = this;
ArrayList<MyBean> allNews = NewsUtis.getAllNews(mContext);
listview = (ListView) findViewById(R.id.listview);
listview.setAdapter(new myAdaper(mContext, allNews));
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
MyBean itemAtPosition = (MyBean) parent.getItemAtPosition(position);
String url = itemAtPosition.url;
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
startActivity(intent);
}
});
}
}
這樣一個簡單的新聞案列就出來了,就實現簡單的實現了點擊按鈕。其他啥的全都沒有。給新生看看。