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

猜你喜欢

转载自blog.csdn.net/weixin_43328457/article/details/100932758