首先我们来看看以下实体类
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直接返回返回当前视图
}
}
效果图如下