如何使用sharedpreferences在列表视图中保存数据

时间:2013-12-06 23:53:36

标签: android listview android-listview sharedpreferences

我正在制作一个笔记列表,其中我有两个存储在变量中的EditText:TituloNota和InsertNota通过Nota.class类。我不能这样做,你保存在ListView中。我错过了什么属性?如您所见,CapturaNota.class类是否使用SharedPreferences存储数据(如果它在那里工作)。以下是3个类:

 public class MainActivity extends Activity  {
 ArrayList<Nota> listaNota = new ArrayList<Nota>();
 ListView lstNotas;
 private SharedPreferences Guarda;
 private static String GUARDA_N = "com.example.lorenote";

 AdaptadorNota adaptador;
 final static int ID_GUARDA_NOTA = 1;
 final static int ID_CAPTURA_NOTA = 2;
 private int posicionSeleccionada = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


     adaptador = new AdaptadorNota(this);
    lstNotas=(ListView) findViewById(R.id.lstNotas); 

    lstNotas.setAdapter(adaptador);
    registerForContextMenu(lstNotas);

    Guarda =this.getSharedPreferences(GUARDA_N, this.MODE_PRIVATE);
}

public class AdaptadorNota extends ArrayAdapter<Nota> {
Activity context;

public AdaptadorNota(Activity context) {
super(context, R.layout.lst_item_nota, listaNota);
this.context=context;   
}


public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = context.getLayoutInflater();
View item=inflater.inflate(R.layout.lst_item_nota, null);

TextView txtitemNota=(TextView)item.findViewById(R.id.txtItemNota);
txtitemNota.setText(listaNota.get(position).getNota());     
TextView txtItemInsertNota =(TextView)item.findViewById(R.id.txtItemInsertNota);
    txtItemInsertNota.setText(listaNota.get(position).getInsertNota());
return item;
}

}
public void Agrega(View view){
Intent i= new Intent(this, CapturaNota.class);
i.putExtra("TituloNota", "");
i.putExtra("InsertNota", "");
startActivityForResult(i, ID_CAPTURA_NOTA);
}

public void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);

switch(requestCode){
case (ID_CAPTURA_NOTA):{
if(resultCode==RESULT_OK){
String TituloNota = data.getStringExtra("TituloNota");
String InsertNota = data.getStringExtra("InsertNota");

Nota n =new Nota(TituloNota, InsertNota);
listaNota.add(n);
adaptador.notifyDataSetChanged();

}
break;
    }

case (ID_GUARDA_NOTA):{
if(resultCode==RESULT_OK){
String TituloNota = data.getStringExtra("TituloNota");
String InsertNota = data.getStringExtra("InsertNota");      
SharedPreferences.Editor editor =Guarda.edit();
editor.putString("TituloNota", "");
editor.putString("InsertNota", ""); 
editor.commit();

Nota n =new Nota(TituloNota, InsertNota);
listaNota.add(n);
adaptador.notifyDataSetChanged();

}
break;
    }

}
}

Nota.class

public class Nota {
private String eTituloNota;
private String txtInsertNota;

public Nota(String TituloNota, String InsertNota) {
    eTituloNota = TituloNota;       
    txtInsertNota = InsertNota;
}

public String getNota() {
    return eTituloNota;
}

public String getInsertNota() {
    return txtInsertNota;
}
}

CapturaNota.class

public class CapturaNota extends Activity {
private EditText eTituloNota;
private EditText txtInsertNota;

private static String GUARDA_N = "com.example.lorenote";
private SharedPreferences Guarda;


public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.agregar_nota);

    eTituloNota=(EditText) findViewById(R.id.eTituloNota);
    eTituloNota.setHint("¿Cual sera el titulo de la nota?");

    txtInsertNota=(EditText) findViewById(R.id.txtInsertNota);
    txtInsertNota.setHint("Ingresa el texto aqui...");

    Bundle extras = getIntent().getExtras();
    eTituloNota.setText(extras.getString("TituloNota"));
    txtInsertNota.setText(extras.getString("InsertNota"));

    Guarda =this.getSharedPreferences(GUARDA_N, this.MODE_PRIVATE);

        String valor =Guarda.getString("TituloNota", "");
    eTituloNota.setText(valor);

    valor =Guarda.getString("InsertNota", "");
    txtInsertNota.setText(valor);

    }

    public void Agrega(View v) {
    Toast.makeText(this, "Nota Agregada", Toast.LENGTH_SHORT).show();
    Intent resultadoDelIntento = new Intent();
    resultadoDelIntento.putExtra("TituloNota", eTituloNota.getText().toString());
    resultadoDelIntento.putExtra("InsertNota", txtInsertNota.getText().toString());
    setResult(RESULT_OK, resultadoDelIntento);

    SharedPreferences.Editor editor =Guarda.edit();
    editor.putString("TituloNota", eTituloNota.getText().toString());
editor.putString("InsertNota", txtInsertNota.getText().toString()); 
editor.commit();
finish();
    }

 }

0 个答案:

没有答案