mercredi 14 août 2019

How do I set variables to true/false from a Listview of Checkboxes?

I created a listview with a custom adapter that allows me to have a list of items with checkboxes next to each item.

So I would like to look at the checkbox for the corresponding item in the list and see if it is checked and if it is, then set the value of boolean whiskey = false to true and so on for the other booleans.

It is very possible I have code in the wrong class or xml file, I've been trying to piece together things I've found on the internet. I'm new to android studio so its proving very difficult. I do have about a years worth of java experience though. I have all my code written in a working program on Eclipse, I am just having a hell of a time figuring out how to implement it into a working app.

Thanks in advance.

customAdapter.java

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;

import java.util.ArrayList;

public class customAdapter extends BaseAdapter {
private ArrayList<String> list = new ArrayList<String>();
private Context context;

public customAdapter(ArrayList<String> list, Context context) {
    this.list = list;
    this.context = context;
}

@Override
public int getCount() {
    return list.size();
}

@Override
public Object getItem(int pos) {

    return list.get(pos);
}
public void setChecked(boolean isChecked){

}


@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    View view = convertView;
    if (view == null) {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = inflater.inflate(R.layout.activity2_listview, null);
    }

    //Handle TextView and display string from your list
    TextView label = (TextView)view.findViewById(R.id.label);
    label.setText(list.get(position));

    //Handle buttons and add onClickListeners
    CheckBox callchkbox = (CheckBox) view.findViewById(R.id.cb);



    callchkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            //update isChecked value to model class of list at current position
            list.get(position).setChecked(isChecked);
        }
    });
    return view;
}

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

Main2Activity.java

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.Arrays;
import android.widget.CheckBox;

public class Main2Activity extends AppCompatActivity {


boolean Whiskey, Bourbon, Rum, Gin, Vodka, Tequila = false;



String [] userIngredients = {"Whiskey", "Bourbon", "Rum", "Gin", "Vodka", "Tequila", "Club Soda", "Lemon-Lime Soda",
"Ginger ale", "Cola", "Still mineral water", "Tonic Water", "Orange Juice", "Cranberry Juice", "Grapefruit Juice",
"Tomato Juice", "Cream or Half and Half", "Milk", "Ginger Beer", "PineApple Juice", "Lemons", "Limes", "Oranges"};

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

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

    ArrayList<String> list = new ArrayList<String>(Arrays.asList(userIngredients));


    listView.setAdapter(new customAdapter(list, Main2Activity.this));

}


        }

activity_main2.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout   xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Main2Activity"
android:id="@+id/linearLayout">

<ListView
    android:layout_width="419dp"
    android:layout_height="558dp"
    android:id="@+id/userIngredients"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/textView2"
    tools:layout_conversion_absoluteHeight="731dp"
    tools:layout_conversion_absoluteWidth="411dp" />

<TextView
    android:id="@+id/textView2"
    android:layout_width="374dp"
    android:layout_height="60dp"
    android:layout_marginStart="8dp"
    android:layout_marginLeft="8dp"
    android:layout_marginTop="16dp"
    android:layout_marginEnd="8dp"
    android:layout_marginRight="8dp"
    android:text="Check Your Ingredients"
    android:textSize="24sp"
    app:fontFamily="@font/cinzel"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />


</android.support.constraint.ConstraintLayout>

activity2_listview.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
    android:id="@+id/label"
    android:layout_width="323dp"
    android:layout_height="wrap_content"
    android:layout_marginLeft="20dp"
    android:text="ingredient"
    android:textSize="20sp" />

<CheckBox
    android:id="@+id/cb"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />


</LinearLayout>




Aucun commentaire:

Enregistrer un commentaire