Android 在共享首选项和arraylist中添加多个字段

Android 在共享首选项和arraylist中添加多个字段,android,arraylist,sharedpreferences,Android,Arraylist,Sharedpreferences,我正在开发一个应用程序,在这个应用程序中,我从服务器获取以下格式的数据 [{"title":"demo title","description":"demo description"}] 这里我有两个字段标题和描述。我想将这些保存在共享首选项中,并在列表视图中显示。下面是我在共享首选项中添加数据的代码 JSONArray arr = new JSONArray(strServerResponse); JSONObject jsonObj = arr.getJSONObject(0);

我正在开发一个应用程序,在这个应用程序中,我从服务器获取以下格式的数据

 [{"title":"demo title","description":"demo description"}]
这里我有两个字段标题和描述。我想将这些保存在共享首选项中,并在列表视图中显示。下面是我在共享首选项中添加数据的代码

  JSONArray arr = new JSONArray(strServerResponse);
  JSONObject jsonObj = arr.getJSONObject(0);
  ArrayList<String> tii = new ArrayList<String>();
  ArrayList<String> tii1 = new ArrayList<String>();
  for (int i = 0; i < arr.length(); i++) {
           pojo = new Pojo();
           JSONObject jobj2 = arr.getJSONObject(i);
           String title = jobj2.optString("title");
           String desc = jobj2.optString("description");
           tii.add(title);
           tii1.add(desc);
  }

  List<String> listTemp = tii;
  List<String> listTemp1 = tii1;
  Set<String> temp = new HashSet<String>(listTemp);
  Set<String> temp1 = new HashSet<String>(listTemp1);
  SharedPreferences.Editor editor = getSharedPreferences("MyPref4", MODE_PRIVATE).edit();
  temp.addAll(listTemp);
  temp1.addAll(listTemp1);
  editor.putStringSet("title", temp);
  editor.putStringSet("description", temp1);
  editor.commit();
JSONArray arr=新的JSONArray(strserver响应);
JSONObject jsonObj=arr.getJSONObject(0);
ArrayList tii=新的ArrayList();
ArrayList tii1=新的ArrayList();
对于(int i=0;i
然后去找回它

    SharedPreferences prefs = getSharedPreferences("MyPref4", MODE_PRIVATE);
    Set<String> set = prefs.getStringSet("title", null);
    servicces.clear();
    for (String p : set) {
         pojo = new Pojo();
         pojo.setServiceTitle(p);
         servicces.add(pojo);
    }

    Set<String> set1 = prefs.getStringSet("description", null);
    for (String p2 : set1) {
         pojo = new Pojo();
         pojo.setServiceDesc(p2);
         servicces.add(pojo);
    }
    servicesAdapter = new ServicesAdapter(ServicesActivity.this, servicces);
    listServ.setAdapter(servicesAdapter);
SharedReferences-prefs=GetSharedReferences(“MyPref4”,模式_-PRIVATE);
Set=prefs.getStringSet(“title”,null);
services.clear();
for(字符串p:set){
pojo=新的pojo();
pojo.setServiceTitle(p);
服务添加(pojo);
}
Set set1=prefs.getStringSet(“说明”,null);
for(字符串p2:set1){
pojo=新的pojo();
pojo.setServiceDesc(p2);
服务添加(pojo);
}
servicesAdapter=新的servicesAdapter(ServicesActivity.this,servicecces);
listServ.setAdapter(servicesAdapter);
服务适配器类

  public class ServicesAdapter extends BaseAdapter {
TextView servTitle, servDes;
Pojo pojo;
private Context activity1;
ArrayList<Pojo> data1;
private ArrayList<Pojo> arraylist1 = null;
public static LayoutInflater inflater;

public ServicesAdapter(Context ctx, ArrayList<Pojo> catt) {
    // TODO Auto-generated constructor stub
    activity1 = ctx;
    data1 = catt;
    inflater = (LayoutInflater) activity1
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    this.arraylist1 = new ArrayList<Pojo>();
    this.arraylist1.addAll(data1);
}

@Override
public int getCount() {
    // TODO Auto-generated method stub
    return data1.size();
}

@Override
public Object getItem(int position) {
    // TODO Auto-generated method stub
    return data1.get(position);
}

@Override
public long getItemId(int position) {
    // TODO Auto-generated method stub
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    View v = convertView;

    v = inflater.inflate(R.layout.services_item, parent, false);
    pojo = data1.get(position);
    servTitle = (TextView) v.findViewById(R.id.servTitle);
    servTitle.setText(pojo.getServiceDesc());

    servDes = (TextView) v.findViewById(R.id.servDesc);
    servDes.setText(pojo.getServiceDesc());

    return v;
}
公共类服务适配器扩展BaseAdapter{
文本视图servTitle,servDes;
波乔波乔;
私人语境活动1;
ArrayList数据1;
private ArrayList arraylist1=null;
公共静电充气机;
公共服务适配器(上下文ctx、阵列列表catt){
//TODO自动生成的构造函数存根
活性1=ctx;
数据1=catt;
充气机=(充气机)活动1
.getSystemService(上下文布局\充气机\服务);
this.arraylist1=新的ArrayList();
this.arraylist1.addAll(data1);
}
@凌驾
public int getCount(){
//TODO自动生成的方法存根
返回data1.size();
}
@凌驾
公共对象getItem(int位置){
//TODO自动生成的方法存根
返回数据1.get(位置);
}
@凌驾
公共长getItemId(int位置){
//TODO自动生成的方法存根
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
//TODO自动生成的方法存根
视图v=转换视图;
v=充气机充气(R.layout.services\u项,父项,假);
pojo=data1.get(位置);
servTitle=(TextView)v.findViewById(R.id.servTitle);
servTitle.setText(pojo.getServiceDesc());
servDes=(TextView)v.findViewById(R.id.servDesc);
servDes.setText(pojo.getServiceDesc());
返回v;
}

问题出在服务适配器的getView中,下面是更正的代码

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    .....

    servTitle = (TextView) v.findViewById(R.id.servTitle);
    servTitle.setText(pojo.getServiceTitle());

    servDes = (TextView) v.findViewById(R.id.servDesc);
    servDes.setText(pojo.getServiceDesc());

    return v;
}

您遇到了什么问题?两个文本字段都显示了说明,甚至是标题。当问题出现在
servicesdapter
class中时,显示class code
servTitle.setText(pojo.getServiceDesc());
您在这里设置的是说明
servTitle.setText(pojo.getservicettitle());
Change
servTitle.setText(pojo.getServiceDesc());
servTitle.setText(pojo.getServiceTitle());