SharedPreferences 使用例子

来源:互联网 发布:崇祯是昏君吗 知乎 编辑:程序博客网 时间:2024/05/29 03:00
package com.example.niuti.ihttpvideoapplication;
import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import org.cybergarage.http.HTTP;
import org.cybergarage.util.KeyValueEntity;
import org.cybergarage.util.XmlUtil;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.io.Serializable;
public class LogActivity extends AppCompatActivity {
    Button btnAddContent;
    EditText log_editText_key;
    Button btnSearchContent;
    EditText log_editText_value;
    RecyclerView log_Content_View;
    LinearLayoutManager log_Content_Layout_Manager;
    ArrayList<KeyValueEntity> entities;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_log);

        btnAddContent=(Button)findViewById(R.id.btnAddContent);
        log_editText_key=(EditText)findViewById(R.id.log_editText_key);
        btnSearchContent=(Button)findViewById(R.id.btnSearchContent);
        log_editText_value=(EditText)findViewById(R.id.log_editText_value);
        log_Content_View=(RecyclerView)findViewById(R.id.log_Content_View);
        log_Content_Layout_Manager=new LinearLayoutManager(this);
        log_Content_View.setLayoutManager(log_Content_Layout_Manager);
        log_Content_View.setHasFixedSize(true);
        // add content button clicks
        btnAddContent.setOnClickListener(new View.OnClickListener() {
            public void onClick(View arg0) {
                String key=log_editText_key.getText().toString();
                String value=log_editText_value.getText().toString();
                if(key.length()==0||value.length()==0)
                {
                    Toast.makeText(getApplicationContext(),"标题或内容不能为空", Toast.LENGTH_LONG).show();
                    return;
                }
                SharedPreferences sp = getSharedPreferences(Helper.sp_niuToolboxApp, Context.MODE_PRIVATE);
                String content=sp.getString(Helper.logContent,null);
                if(content==null) {
                    entities = new ArrayList<KeyValueEntity>();
                }
                else {
                    entities = XmlUtil.serialize2Entities(content);
                }
                boolean isExist=false;
                for(int index=0;index<entities.size();index++)
                {
                    String entityKey=entities.get(index).getKey();
                    if(entityKey.equals(key))
                    {
                        isExist=true;
                        break;
                    }
                }
                if(!isExist) {
                    entities.add(new KeyValueEntity(key, value));
                    SharedPreferences.Editor editor = sp.edit();
                    editor.putString(Helper.logContent, XmlUtil.serialize2Xml(entities));
                    editor.commit();
                    Toast.makeText(getApplicationContext(), "添加成功", Toast.LENGTH_SHORT).show();
                }
                else
                {
                    Toast.makeText(getApplicationContext(), "标题已经存在,无法添加或删除原来数据再添加", Toast.LENGTH_LONG).show();
                }
            }
        });
        // search content button clicks
        btnSearchContent.setOnClickListener(new View.OnClickListener() {
            public void onClick(View arg0) {
                SharedPreferences sp = getSharedPreferences(Helper.sp_niuToolboxApp, Context.MODE_PRIVATE);
                String content=sp.getString(Helper.logContent,null);
                if(content==null) {
                    entities = null;
                    Toast.makeText(getApplicationContext(),"查询结果为空", Toast.LENGTH_SHORT).show();
                }
                else {
                    entities = XmlUtil.serialize2Entities(content);
                    String key=log_editText_key.getText().toString();
                    String value=log_editText_value.getText().toString();
                    //filter
                    final ArrayList<KeyValueEntity> filterEntities=new ArrayList<KeyValueEntity>();
                    for(int index=0;index<entities.size();index++)
                    {
                        KeyValueEntity entity=entities.get(index);
                        if(!key.isEmpty())
                        {
                            if( entity.getKey().contains(key)) {
                                if (!value.isEmpty()) {
                                    if (entity.getValue().contains(value))
                                        filterEntities.add(entity);
                                } else {
                                    filterEntities.add(entity);
                                }
                            }
                        }
                        else
                        {
                            if (!value.isEmpty()) {
                                if (entity.getValue().contains(value))
                                    filterEntities.add(entity);
                            } else {
                                filterEntities.add(entity);
                            }
                        }
                    }
                    //show data
                    final ContentAdapter adapter=new ContentAdapter(filterEntities);
                    adapter.setOnItemClickListener(new ContentAdapter.OnRecyclerViewItemClickListener() {
                        @Override
                        public void onItemClick(View view, int position) {
                            Toast.makeText(getApplicationContext(),"短按了", Toast.LENGTH_SHORT).show();
                        }
                    });
                    adapter.setOnItemLongClickListener(new ContentAdapter.OnRecyclerViewItemLongClickListener() {
                        @Override
                        public void onItemLongClick(View view,final int position) {
                            AlertDialog.Builder builder=new AlertDialog.Builder(LogActivity.this);
                            builder.setMessage("确认删除吗?");
                            builder.setTitle("提示");
                            builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    dialog.dismiss();
                                    entities.remove(filterEntities.get(position));
                                    //update SP
                                    SharedPreferences sp = getSharedPreferences(Helper.sp_niuToolboxApp, Context.MODE_PRIVATE);
                                    SharedPreferences.Editor editor = sp.edit();
                                    editor.putString(Helper.logContent, XmlUtil.serialize2Xml(entities));
                                    editor.commit();
                                    //update screen
                                    filterEntities.remove(position);
                                    adapter.notifyDataSetChanged();
                                }
                            });
                            builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    dialog.dismiss();
                                }
                            });
                            builder.create().show();
                        }
                    });
                    log_Content_View.setAdapter(adapter);
                }
            }
        });
    }
}
0 0