Problem with checkbox and Onitemclick event

Asked

Viewed 37 times

0

I created a list with checkbox disabled, where the goal is that when the user clicks on an item in the list, a new screen is opened and the check is marked, but I can’t make the check be marked automatically.

Class Listaactivity

public class ListaActivity extends AppCompatActivity implements AdapterView.OnItemClickListener{

private ListView listView;

private AdapterListView adapterListView;

private ArrayList<ItemListView> Itens;

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

    listView = (ListView) findViewById(R.id.lstLista);

    listView.setOnItemClickListener(this);

    CriarLista();
}

private void CriarLista(){

    Itens = new ArrayList<ItemListView>();

    ItemListView Item1 = new ItemListView("Frase 1", 0, false);
    ItemListView Item2 = new ItemListView("Frase 2", 1, false);
    ItemListView Item3 = new ItemListView("Frase 3", 2, false);
    ItemListView Item4 = new ItemListView("Frase 4", 3, false);
    ItemListView Item5 = new ItemListView("Frase 5", 4, false);
    ItemListView Item6 = new ItemListView("Frase 6", 5, false);
    ItemListView Item7 = new ItemListView("Frase 7", 6, false);
    ItemListView Item8 = new ItemListView("Frase 8", 7, false);
    ItemListView Item9 = new ItemListView("Frase 9", 8, false);
    ItemListView Item10 = new ItemListView("Frase 10", 9, false);

    Itens.add(Item1);
    Itens.add(Item2);
    Itens.add(Item3);
    Itens.add(Item4);
    Itens.add(Item5);
    Itens.add(Item6);
    Itens.add(Item7);
    Itens.add(Item8);
    Itens.add(Item9);
    Itens.add(Item10);

    adapterListView = new AdapterListView(this, Itens);

    listView.setAdapter(adapterListView);

    listView.setCacheColorHint(Color.TRANSPARENT);

}

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3){

    ItemListView item = adapterListView.getItem(arg2);

    item.setCheck(true);

    Intent EnviarDados = new Intent(ListaActivity.this, FraseActivity.class);

    int id = item.getId();

    Bundle bundle = new Bundle();

    bundle.putInt("id", id);

    EnviarDados.putExtras(bundle);

    startActivity(EnviarDados);
}


}

Class Itemlistview

public class ItemListView {
private String Texto;
private int Id;
private boolean Check;

public ItemListView(String texto, int id, boolean check){
    this.Texto = texto;
    this.Id = id;
    this.Check = check;
}

public String getTexto(){
    return Texto;
}

public void setTexto(String texto){
    Texto = texto;
}

public int getId() {
    return Id;
}

public void setId(int id) {
    Id = id;
}

public boolean getCheck() {
    return Check;
}

public void setCheck(boolean check) {
    Check = check;
}

}

Class Adapterlistview

public class AdapterListView extends BaseAdapter{
private LayoutInflater mInflater;
private ArrayList<ItemListView> Itens;

public AdapterListView(Context context, ArrayList<ItemListView> Itens){
    this.Itens = Itens;
    mInflater = LayoutInflater.from(context);
}

public int getCount(){
    return Itens.size();
}

public ItemListView getItem(int position){
    return Itens.get(position);
}

public long getItemId(int position){
    return position;
}

public View getView(int position, View view, ViewGroup parent){
    ItemListView item = Itens.get(position);
    view = mInflater.inflate(R.layout.item_listview, null);

    ((TextView) view.findViewById(R.id.txtItem)).setText(item.getTexto());
    ((CheckBox) view.findViewById(R.id.chkItem)).setChecked(item.getCheck());

    return view;
}

}

1 answer

0


You forgot to call notifyDataSetChanged().

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3){

    ItemListView item = adapterListView.getItem(arg2);

    item.setCheck(true);

    // Como o próprio nome sugere, notifica o adapter
    // que os dados da sua lista foram alterados.
    // Ao ser chamado, atualiza suas views/items
    adapterListView.notifyDataSetChanged();

    // ...
}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.