CheckedTextView set to checked oncreate en listview?

Estoy tratando de hacer una lista de compras, donde se comprueba CheckedTextView si ya ha elegido su elemento anteriormente, es decir, el elemento tiene un conjunto booleano a true si se escoge.

He overriden el método getview para cambiar el texto CheckedTextView con setText () y que funciona, pero la configuración del método setChecked (true) en CheckedTextView doesnt hacer que se compruebe.

Sé que no estoy reciclando ninguna vista en getview (), que será un proyecto posterior en el proyecto, derecho sé que necesito ver una marca de verificación verde =)

¿Alguna idea? por favor ayuda.

Mis archivos xml:

Test.xml

<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/text1" android:layout_width="fill_parent" android:layout_height="?android:attr/listPreferredItemHeight" android:textAppearance="?android:attr/textAppearanceLarge" android:gravity="center_vertical" android:checkMark="?android:attr/textCheckMark" android:paddingLeft="5dip" android:paddingRight="50dip" android:textColor="#000000" android:background="#ffffff" android:tag="text1" android:text="testtestetstt" android:focusable="false"/> 

Listfippel.java

 package nu.listfippel.mitt; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import android.app.ListActivity; import android.content.Context; import android.graphics.Color; import android.graphics.Typeface; import android.os.Bundle; import android.text.Spannable; import android.text.style.StrikethroughSpan; import android.text.style.StyleSpan; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.BaseAdapter; import android.widget.CheckBox; import android.widget.CheckedTextView; import android.widget.ListAdapter; import android.widget.TextView; import android.widget.Toast; import android.widget.AdapterView.OnItemClickListener; public class listfippel extends ListActivity { //ArrayList<Ingred> ing; Ingred i1 = new Ingred("banan", 2, 1, true); Ingred i2 = new Ingred("äpple", 3, 1, false); Ingred i3 = new Ingred("päron", 3, 1, true); Ingred i4 = new Ingred("gröt", 3, 1, false); Ingred i5 = new Ingred("bröd", 3, 1, false); Ingred i6 = new Ingred("kyckling", 3, 1, false); Ingred i7 = new Ingred("röd paprika", 3, 1, false); Ingred i8 = new Ingred("tårta", 3, 1, false); Ingred i9 = new Ingred("bappelsin", 3, 1, false); Ingred i10 = new Ingred("gurka", 3, 1, true); CheckedTextView ctv; Ingred[] ingarray = { i1, i2, i3, i4, i5, i6, i7, i8, i9, i10 }; Ingadapter adapter; Ingred temp; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.list); ArrayList<Ingred> ing = new ArrayList<Ingred>(Arrays.asList(ingarray)); adapter = new Ingadapter(this, R.layout.test, ing); //adapter = new IngArrayAdapter(ing); OnItemClickListener il = new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View arg1, int index, long arg3) { temp = (Ingred)parent.getItemAtPosition(index); if (temp.getCheck()){ Toast toast = Toast.makeText(getApplicationContext(), "Du avmarkerade nyss den\nklarmarkerade varan " + parent.getItemAtPosition(index).toString(), Toast.LENGTH_LONG); toast.setGravity(Gravity.CENTER, 0, 0); toast.show(); } if (!temp.getCheck()){ temp.setCheck(true); //ctv.setChecked(true); } else { temp.setCheck(false); } adapter.notifyDataSetChanged(); } }; setListAdapter(adapter); //setTitleColor(Color.RED); getListView().setOnItemClickListener(il); getListView().setChoiceMode(2); } class Ingadapter extends ArrayAdapter<Ingred>{ public Ingadapter(Context context, int textViewResourceId, List<Ingred> objects) { super(context, textViewResourceId, objects); // TODO Auto-generated constructor stub } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub LayoutInflater inflater=getLayoutInflater(); View row = inflater.inflate(R.layout.test, null); row.setTag(R.id.text1, row.findViewById(R.id.text1)); CheckedTextView ctv =(CheckedTextView)row.getTag(R.id.text1); Ingred temp = (Ingred)((AdapterView<?>) parent).getItemAtPosition(position); if(temp.getCheck()){ ctv.setChecked(true); } ctv.setText(temp.toString()); return (row); } } } 

Ingred.java

 package nu.listfippel.mitt; public class Ingred { private String namn; @SuppressWarnings("unused") private int volym; private double antal; private boolean check = false; private String retstring; public Ingred(String namn, double antal, int volym, boolean check){ this.namn = namn; this.antal = antal; this.volym = volym; this.check = check; } public String toString(){ if (!this.check){ retstring = namn + " \n(" + antal + " behövs)"; } else { retstring = namn; } return retstring; } public boolean getCheck(){ return this.check; } public void setCheck(boolean check){ this.check = check; } } 

Si va a usar setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); , Es necesario utilizar el método setSelection() en ListView para indicar que se comprueban, no se manejan durante el enlazado de filas.

Mira esta publicación: Android ListView CHOICE_MODE_MULTIPLE, ¿cómo establecer el índice marcado? Se dice que el método setItemChecked de ListView debe utilizarse para establecer la preselección.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.