SharedPreferences存储及应用

首先我们来看看以下实体类

package bean;


import java.io.Serializable;


/**
 * Created by Administrator on 2016/6/16.
 */
public class Bean implements Serializable {
    private int id;//编号
    private String musicName;//歌曲名称
    private String geshou;//歌手
    public Bean(){}
   public Bean(int id,String musicName,String geshou){


        this.id=id;
        this.musicName=musicName;
        this.geshou=geshou;
    }
    public int getId() {
        return id;
    }


    public void setId(int id) {
        this.id = id;
    }


    public String getMusicName() {
        return musicName;
    }


    public void setMusicName(String musicName) {
        this.musicName = musicName;
    }


    public String getGeshou() {
        return geshou;
    }


    public void setGeshou(String geshou) {
        this.geshou = geshou;
    }


    @Override
    public String toString() {
        return super.toString();
    }
}

养成一个创建实体的习惯,会对你理解面向对象有很大帮助

我们再看看MainActivity的主界面

package administrator.sqlitetest;


import java.util.ArrayList;
import java.util.List;


import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;
import bean.Bean;


import com.example.music_test.R;


public class MainActivity extends Activity {
public List<Bean> list;
   private ListView listView;
   private Button ser;
   private Bean bean;
   private SharedPreferences shre;
   private SharedPreferences.Editor edt;
   private Adapater_item adp;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.music_layout);
        initView();
    }
    public void initView(){//初始化控件
        shre = getSharedPreferences("ser", MODE_PRIVATE);
        edt = shre.edit();


       
        
        ser = (Button)findViewById(R.id.ser);
    listView = (ListView)findViewById(R.id.listview);
    listView.setAdapter(adp);
        Listener();
    }
    
    public MainActivity() {//初始化数据到集合
super();

list = new ArrayList<Bean>();
bean = new Bean(1,"传奇","王菲");
         list.add(bean);
         bean = new Bean(2,"小酒窝","蔡卓妍");
         list.add(bean);
         bean = new Bean(3,"风吹麦浪","李健");
         list.add(bean);
         bean = new Bean(4,"荷塘月色","凤凰传奇");
         list.add(bean);
         bean = new Bean(5,"蓝莲花","许巍");
         list.add(bean);
         bean = new Bean(6,"兰亭序","周杰伦");
         list.add(bean);
         adp = new Adapater_item(this, list);
        
}
public void Listener(){//存储SharedPreferences中
    ser.setOnClickListener(new OnClickListener() {
 
  @Override
  public void onClick(View arg0) {
  // TODO Auto-generated method stub
  for(int i=0;i<list.size();i++){//存放不同的key,SharedPreferences不许重复key,利用动态i属性变为不同key
  edt.putInt("id"+i, list.get(i).getId());
  edt.putString("music_name"+i, list.get(i).getMusicName().toString());
  edt.putString("name"+i, list.get(i).getGeshou().toString());
  }
 
 
  edt.commit();//提交数据
 
  //Shre_activiys sh = new Shre_activiys(list);
  Intent in = new Intent(MainActivity.this,Shre_activiys.class);
 
  startActivity(in);
 
  }
  });


    }
  




}

数据是以假数据存入集合,当我们点击按钮时,所有数据从集合取出会存入SharedPreferences

存入之后会跳转到另个一个界面,另一个界面则是从SharedPreferences取出数据适配到listView上(如下代码)


package administrator.sqlitetest;


import java.util.ArrayList;
import java.util.List;


import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ListView;
import bean.Bean;


import com.example.music_test.R;


public class Shre_activiys extends Activity {
private ListView listview;
private SharedPreferences she;
private List<Bean> list,list1;
private Adapater_item adp;
private Button bu;
private CheckBox ch1,ch2;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.share_quchu_layout);
initView();
}



public void initView(){//初始化组建及监听
ch1 = (CheckBox)findViewById(R.id.ch1);
ch2 = (CheckBox)findViewById(R.id.ch2);
bu = (Button)findViewById(R.id.exit);
list = new ArrayList<Bean>();
MainActivity m = new MainActivity();
listview = (ListView)findViewById(R.id.share_listview);
she = getSharedPreferences("ser", MODE_PRIVATE);//初始化SharedPreferences,模式为私有
for(int i=0;i<m.list.size();i++){

String name = she.getString("name"+i, null);
int id = she.getInt("id"+i, 0);
String music_name = she.getString("music_name"+i,null );//从SharedPreferences取出数据
list.add(new Bean(id,music_name, name));//把取出的数据放入集合,并实例化对象

}
adp = new Adapater_item(this, list);//适配数据
listview.setAdapter(adp);//加载适配器显示到listview中
bu.setOnClickListener(new OnClickListener() {//退出按钮监听

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
finish();
}
});
ch1.setOnCheckedChangeListener(new OnCheckedChangeListener() {//不显示编号/与显示编号的判定

@Override
public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
// TODO Auto-generated method stub
list1 = new ArrayList<Bean>();
if(arg1){//隐藏编号
list1.clear();
Adapater_item.indexs=1;
list1.addAll(list);
adp = new Adapater_item(Shre_activiys.this, list1);
listview.setAdapter(adp);
adp.notifyDataSetChanged();
}else{//显示编号
list1.clear();
Adapater_item.indexs=0;
adp = new Adapater_item(Shre_activiys.this, list);
listview.setAdapter(adp);
adp.notifyDataSetChanged();
}
}
});
ch2.setOnCheckedChangeListener(new OnCheckedChangeListener() {//隐藏歌手判定

@Override
public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
// TODO Auto-generated method stub
if(arg1){//隐藏歌手
Adapater_item.name=1;
list1.clear();
list1.addAll(list);
adp = new Adapater_item(Shre_activiys.this, list1);
listview.setAdapter(adp);
adp.notifyDataSetChanged();
}else{//显示歌手
list1.clear();
Adapater_item.name=0;
adp = new Adapater_item(Shre_activiys.this, list);
listview.setAdapter(adp);
adp.notifyDataSetChanged();
}
}
});

}


}

下面我们再来看看Listview的适配器界面代码


package administrator.sqlitetest;


import java.util.List;


import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import bean.Bean;


import com.example.music_test.R;


/**
 * Created by Administrator on 2016/6/16.
 */
public class Adapater_item extends BaseAdapter {
    private List<Bean> list;
    private Context con;
    public static int indexs=0;
    public static int name;
    public Adapater_item(Context con,List<Bean> list){
        this.list=list;
        this.con=con;
    }
    @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) {
        if(view==null){//如果视图为null则创建视图
           
            view = View.inflate(con,R.layout.items,null);
            
            TextView index = (TextView)view.findViewById(R.id.index);
            TextView musicName = (TextView)view.findViewById(R.id.music_name);
            TextView geshou = (TextView)view.findViewById(R.id.ge_shou);
            Bean bean = list.get(i);
            if(indexs==0){
            index.setVisibility(View.VISIBLE);
            }else if(indexs==1){
            index.setVisibility(View.GONE);
            }
            if(name==0){
            geshou.setVisibility(View.VISIBLE);
            }else if(name==1){
            geshou.setVisibility(View.GONE);
            }
            index.setText(String.valueOf(bean.getId()));
            musicName.setText(bean.getMusicName().toString());
            geshou.setText(bean.getGeshou().toString());
            return view;
        }
        return view;//如果当前视图部位Null直接返回返回当前视图
    }
}

效果图如下



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值