2017.08.16ListView實現新聞案列(沒有連數據庫)

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);

            }
        });
    }

}

這樣一個簡單的新聞案列就出來了,就實現簡單的實現了點擊按鈕。其他啥的全都沒有。給新生看看。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章