Android 簡單的設置頁面用來儲存參數

這裏的SU就是一個簡單的xml幫助類,很簡單就不放代碼了。

雖然這玩意有點傻,但是這是一個比賽的設置頁面較爲簡單的設置方法,總不能一個EditText的綁定進行數據設置之類的,太麻煩了,比賽畢竟是比的是時間。

/**
 * 首先明確思路
 *  1.我們爲什麼要創建這個類?
 *      因爲我們要在這個類裏面進行主頁面的數據的更改。
 *  2.創建這個類的時候需要哪些附屬類,作用是什麼?
 *      首先,在佈局文件裏面使用的是ListView這個控件,使用這個控件的原因是:代碼量小
 *     沒有那麼多的findViewById,並且做出來的UI界面也比較好看;所以跟着ListView控件
 *     隨之而來的有BaseAdapter適配器幫助類,以及數據類,視圖控件幫助類。
 */
public class setActivity extends Activity {
    //定義好相關的對象,並及時的初始化,防止沒有必要的空對象異常
    private SU su;//SU工具類的對象,用來儲存以及讀取數據。
    private List<Data> mlist;//數據數組,這裏使用的是ArrayList數組
    private String[] values,names;//定義兩個String類型的數組,一個用來存入數據,一個用來存入標題
    private ListView listView;//這個就不用多說了
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.set);
        //將佈局文件關聯此類
        su=new SU(getApplicationContext());
        //初始化相關的對象
        values=new String[]{"數據標題1,數據標題2"};
        listView=findViewById(R.id.list);
        names=new String[]{"數據1,數據2"};
        mlist=new ArrayList<>();
        //首先的,如果是第一次打開程序的話,當沒有數據在本地存儲的時候
        //先把數據存一遍,不然主頁面會拋異常,甚至直接崩
        if(su.get("0").equals("NO")){
            //for循環,沒什麼東西
            for(int i=0;i<names.length;i++){
                su.set(""+i,values[i]);
            }
        }else {
            //如果不是第一次的話,那麼也許本地的數據已經被重新寫入了,那麼就for循環讀取,將數組的數據進行刷新
            for(int i=0;i<names.length;i++){
              if(!su.get(""+i).equals("NO")){
                  values[i]=su.get(""+i);
              }
            }
        }
        //調用刷新函數
        re();
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                al(i);
            }
        });
    }
    public void re(){
        //首先的,將list裏面的數據全部清除,然後再重新寫入
        mlist.clear();
        for(int i=0;i<values.length;i++){
            mlist.add(new Data(names[i],values[i]));
        }
        MyBaseAdapter baseAdapter =new MyBaseAdapter(mlist);
        //新建適配器對象,應用到ListView裏面
        listView.setAdapter(baseAdapter);
    }
    class MyBaseAdapter extends BaseAdapter{
        //適配器幫助類
        private List<Data> list;
        public MyBaseAdapter(List<Data> liste){
            list=liste;
        }
        @Override
        public int getCount() {
            return list.size();
        }

        @Override
        public Object getItem(int i) {
            return list.get(i);
        }

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

        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            //如果這個視圖不存在的時候,則會新建一個ViewHolder對象,然後將
            //通過LayoutInflater將佈局文件綁定過來
            ViewHolder viewHolder;
            if(view==null){
                viewHolder=new ViewHolder();
                view= LayoutInflater.from(getApplicationContext()).inflate(R.layout.item,null);
                viewHolder.name=view.findViewById(R.id.name);
                viewHolder.value=view.findViewById(R.id.value);
                view.setTag(viewHolder);
            }else {
                //如果視圖已經存在了,也就是說,findViewByID也就沒有必要了
                //就直接通過view.getTag的方法拿過來
                viewHolder= (ViewHolder) view.getTag();
            }
            Data data =list.get(i);
            viewHolder.value.setText(data.value);
            viewHolder.name.setText(data.name);
            return view;
        }
        class ViewHolder{
            TextView name,value;
        }
    }
    class Data{
        String name,value;
        public Data(String name, String value) {
            this.name = name;
            this.value = value;
        }
    }
    public void al(final int num){
        /**
         * 彈窗:推薦builder,因爲可以自己添加按鈕,但是沒有dissmiss方法,但是可以使用create方法返回一個AlertDialog
         */
        AlertDialog.Builder builder=new AlertDialog.Builder(setActivity.this);
        View view =LayoutInflater.from(getApplicationContext()).inflate(R.layout.dig,null);
        final EditText editText =view.findViewById(R.id.editText);
        builder.setPositiveButton("確定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                //將點擊的是哪一個item傳入進來,進行數據的更新
                values[num]=editText.getText().toString();
                //然後再次刷新一下adapter
                re();
            }
        });
        builder.setView(view);
        builder.show();
    }
    public void set(View view){
        for(int i=0;i<values.length;i++){
            su.set(""+i,values[i]);
            //儲存按鈕,將數據全部再次寫入
        }
    }
    public void f(View view){
        finish();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章