Android UI 老虎機

今天完成的任務(wù)

  • listview 的使用步驟
  • 簡單的listview老虎機實現(xiàn)

1.作品展示

Screenshot_2017-03-12-14-10-43.png

2.需要掌握的知識

  • listview的使用步驟
  • listview的Adapter接口的實現(xiàn)
  • listview中的MVC

3.知識詳解

  • ListView 是一個控件,一個在垂直滾動的列表中顯示條目的一個控件,這些條目的內(nèi)容來自于一個ListAdapter 。EditText Button TextView ImageView Checkbox 五大布局。

      1.布局添加Listview
      
      2.找到listview
    
      3.創(chuàng)建一個Adapter適配器繼承BaseAdapter,封裝4個方法,其中g(shù)etcount,getview必須封裝
          getcount:告訴listview要顯示的條目數(shù)
          getview:告訴listview每個條目顯示的內(nèi)容。
      4.創(chuàng)建Adapter的一個對象,設(shè)置給listview。
              listview.setAdapter(ListAdapter adapter);
    

  • listview優(yōu)化
    adapter中g(shù)etview方法會傳進來一個convertView,convertView是指曾經(jīng)使用過的view對象,可以被重復(fù)使用,但是在使用前需要判斷是否為空,不為空直接復(fù)用,并作為getview方法的返回對象。
    TextView view = null;
    if(convertView != null){//判斷converView是否為空,不為空重新使用
    view = (TextView) convertView;
    }else{
    view = new TextView(mContext);//創(chuàng)建一個textView對象
    }
    return view;

4.項目代碼

public class MainActivity extends AppCompatActivity {
    //1,聲明控件LISTVIEW
    private ListView listView1;
    private ListView listView2;
    private ListView listView3;
    private Context mContext;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //2,獲取控件的id
        listView1 = (ListView)findViewById(R.id.list_item1);
        listView2 = (ListView)findViewById(R.id.list_item2);
        listView3 = (ListView)findViewById(R.id.list_item3);
        mContext = this;
        //3,進行綁定
        MyAdapter myAdapter = new MyAdapter();
        listView3.setAdapter(myAdapter);
        listView2.setAdapter(myAdapter);
        listView1.setAdapter(myAdapter);
    }
    //創(chuàng)建適配器類實現(xiàn)接口
    class MyAdapter extends BaseAdapter{
        @Override
        public int getCount() {
            return 50;
        }

        @Override
        public Object getItem(int i) {
            return null;
        }

        @Override
        public long getItemId(int i) {
            return 0;
        }

        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            //聲明一個textview對象
            TextView view0 = null;
            //進行判斷是否能過復(fù)用
            if(view != null){
                view0 = (TextView)view;
            }else {
                view0 = new TextView(mContext);
            }
            view0.setTextSize(40);
            Random random = new Random();
            int num = random.nextInt(100);
            if(num<20){
                view0.setText("桃");
                view0.setTextColor(Color.parseColor("#ff00ff"));
            }else if(num<40){
                view0.setText("梨");
                view0.setTextColor(Color.YELLOW);
            }else if(num<60){
                view0.setText("棗");
                view0.setTextColor(Color.RED);
            }else if(num<80){
                view0.setText("橘");
                view0.setTextColor(Color.parseColor("#d4824f"));
            }else{
                view0.setText("杏");
                view0.setTextColor(Color.parseColor("#00ff00"));
            }


            return view0;
        }
    }
}

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.wenkai.tigerlistview.MainActivity">

    <ListView
        android:id="@+id/list_item1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1" />
    <ListView
        android:id="@+id/list_item2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1" />
    <ListView
        android:id="@+id/list_item3"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1" />

</LinearLayout>

5.總結(jié)反思

  • 最近幾天木有更新博客是因為AS和系統(tǒng)有些問題,一直在調(diào)試發(fā)現(xiàn)AS的SDK環(huán)境變量多了一個*號,也是服了。不過在stackoverflow上學(xué)習(xí)了一波還是不錯的,還有就是這幾天變懶了。
  • 學(xué)習(xí)一些新的知識時如果能用生活中的小例子描述出來就更能加深理解了,編程也來源于生活中。
  • 規(guī)定自己本學(xué)期看書的目標,以專業(yè)的為主,其他方面的書也可以看看,本學(xué)期就主要專業(yè)4本吧,發(fā)現(xiàn)邏輯思維還要跟上,拿本益智類型的題來練練喲。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容