0

I am new to android, I have Customlistview using ArrayAdopter when user clicked on particular item in list its background is changed. I now want to save this in sharedperfernce for later use.

The scenario is to highlight the particular list item when anyone clicked on listview after highlight this must save in sharedperfernce, so that when user closes the app and returns back to the app they must see the highlight list view

My custom Adopter code:

        package bible.swordof.God;

    import android.app.Activity;
    import android.content.ContentValues;
    import android.content.Context;
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.content.SharedPreferences;
    import android.database.Cursor;
    import android.database.SQLException;
    import android.database.sqlite.SQLiteDatabase;
    import android.graphics.Color;
    import android.opengl.Visibility;
    import android.os.Vibrator;
    import android.preference.PreferenceManager;
    import android.speech.tts.TextToSpeech;
    import android.support.v7.app.AlertDialog;
    import android.support.v7.app.AppCompatActivity;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.view.Window;
    import android.widget.ArrayAdapter;
    import android.widget.Button;
    import android.widget.CompoundButton;
    import android.widget.ImageView;
    import android.widget.LinearLayout;
    import android.widget.TextView;
    import android.widget.Toast;
    import android.widget.ToggleButton;

    import com.amulyakhare.textdrawable.TextDrawable;
    import com.amulyakhare.textdrawable.util.ColorGenerator;


    import java.util.ArrayList;
    import java.util.List;
    import java.util.Locale;

    import es.dmoral.toasty.Toasty;
    import petrov.kristiyan.colorpicker.ColorPicker;

    import static android.content.Context.MODE_PRIVATE;
    import static android.database.sqlite.SQLiteDatabase.CONFLICT_NONE;
    import static android.icu.lang.UCharacter.GraphemeClusterBreak.V;
    import static android.support.constraint.Constraints.TAG;
    import static android.support.v4.content.ContextCompat.createDeviceProtectedStorageContext;
    import static android.support.v4.content.ContextCompat.startActivity;

    public class FullverseAdopter extends ArrayAdapter<String> {
        private ALLVERSE activity;

        private List<String> versenumber;
        private List<String>verseid;
        private List<String> verselist;
        private List<String> refernce;
        TextToSpeech textToSpeech;
        private DatabaseHelper mDBHelper;
        private SQLiteDatabase mDb;
        private boolean highlight=false;



    public  String ex="switch";

        //check for availabe language
        int result;


        public FullverseAdopter(ALLVERSE context, int resource, List<String> versenumber, List<String> verselist, List<String> refernce, List<String>verseid) {
            super(context, resource, versenumber);
            this.activity = context;
            this.versenumber = versenumber;
            this.verselist = verselist;
            this.refernce = refernce;
            this.verseid=verseid;



        }


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

        @Override
        public String getItem(int position) {
            return versenumber.get(position);
        }

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

        @Override
        public View getView(final int position, View convertView, final ViewGroup parent) {
            final ViewHolder holder;

            LayoutInflater inflater = (LayoutInflater) activity.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
            // If holder not exist then locate all view from UI file.
            if (convertView == null) {
                // inflate UI from XML file
                 convertView = inflater.inflate(R.layout.versedisplayrow, parent, false);
                // get all UI view
                holder = new ViewHolder(convertView);
                // set tag for holder
               holder.versenumber = (TextView) convertView.findViewById(R.id.versenumber);
                holder.verselist = (TextView) convertView.findViewById(R.id.verse);
               holder.addfavoruite=(ToggleButton)convertView.findViewById(R.id.adbookmark);

               holder.linearLayout=(LinearLayout)convertView.findViewById(R.id.layout);








                convertView.setTag(holder);
            } else {
                // if holder created, get tag from view
                holder = (ViewHolder) convertView.getTag();
            }
            holder.versenumber.setText(versenumber.get(position));

            holder.verselist.setText(verselist.get(position));


  //here is color changed when user press on long clicked listner now i want save this sharedperfernce after change the color  


    holder.linearLayout.setOnLongClickListener(new View.OnLongClickListener() {


        @Override
        public boolean onLongClick(View v) {
            highlight=true;
            Toasty.success(activity, "PICK COLOR", Toast.LENGTH_SHORT, true).show();
            Vibrator vibe = (Vibrator)activity.getSystemService(Context.VIBRATOR_SERVICE);
            vibe.vibrate(100);





            ColorPicker colorPicker = new ColorPicker(activity);
            ArrayList<String>colors=new ArrayList<>();
            colors.add("#e0e0eb");
            colors.add("#ccffff");
            colors.add("#ffe6ff");
            colors.add("#ffffcc");
            colors.add("#ccffcc");
            colors.add("#e6f2ff");
            colorPicker.setColors(colors).setColumns(4).setTitle("HIGHLIGHT VERSE").setRoundColorButton(true).setOnChooseColorListener(new ColorPicker.OnChooseColorListener() {
                @Override
                public void onChooseColor(int position, int color) {



//color is changed
  holder.linearLayout.setBackgroundColor(color);





                }

                @Override
                public void onCancel() {

                }
            }).show();






            return false;
        }
    });
            /*holder.verselist.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {




    /*holder.verselist.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {






        }
    });*/



            //share verse
            holder.share.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toasty.info(activity, "Sharing a verse.", Toast.LENGTH_SHORT, true).show();
                    Intent sendIntent = new Intent();
                    sendIntent.setAction(Intent.ACTION_SEND);
                    sendIntent.putExtra(Intent.EXTRA_TEXT, refernce.get(position) + ":" + versenumber.get(position) + '\n'   + verselist.get(position));
                    sendIntent.setType("text/plain");
                    activity.startActivity(sendIntent);

                }
            });

    //add in favourite
          holder.addfavoruite.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

                    if(isChecked){
                        mDBHelper = new DatabaseHelper(activity);
                        mDb = mDBHelper.getWritableDatabase();
                        ContentValues contentValues=new ContentValues();
                      contentValues.put("id",verseid.get(position));
                      contentValues.put("bookname",refernce.get(position));
                       contentValues.put("versenumber",versenumber.get(position));
                       contentValues.put("verse",verselist.get(position));
                       long check=mDb.insert("favourite",null,contentValues);
                       Log.d("MY_TAG","DB IS NOW "+check);
                       Toasty.success(activity, "Added in favouite", Toast.LENGTH_SHORT, true).show();


                    }else {


                        mDBHelper = new DatabaseHelper(activity);
                        mDb = mDBHelper.getWritableDatabase();
                        long delete= mDb.delete("favourite","id=?",new String[]{verseid.get(position)});
                       Toasty.error(activity, "Remove in favouite", Toast.LENGTH_SHORT, true).show();
                    }


                }
            });

           /* textToSpeech = new TextToSpeech(activity, new TextToSpeech.OnInitListener() {
                @Override
                public void onInit(int status) {

                    if (status == TextToSpeech.SUCCESS) {
                        result = textToSpeech.setLanguage(Locale.ENGLISH);
                    } else {

                        Toast.makeText(activity, "YOUR DEVICE NOT SUPPORTED", Toast.LENGTH_SHORT).show();
                    }
                }
            });
    */



            //My toggle button








           /* holder.speakverse.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    Toast.makeText(activity, "I AM CLICKED", Toast.LENGTH_SHORT).show();

                    if (result == TextToSpeech.LANG_NOT_SUPPORTED || result == TextToSpeech.LANG_MISSING_DATA) {

                        Toast.makeText(activity, "Language not supported or Missing", Toast.LENGTH_SHORT).show();

                    } else {


                        textToSpeech.speak(verselist.get(position), TextToSpeech.QUEUE_FLUSH, null);

                    }
                }
            });*/




            return convertView;
        }

        static class ViewHolder {
            private TextView versenumber;
            private TextView verselist;

            private ImageView share;
            private  ToggleButton addfavoruite;
            private ImageView speakverse;
            private LinearLayout linearLayout;

            public ViewHolder(View v) {
                versenumber = (TextView) v.findViewById(R.id.versenumber);
                verselist = (TextView) v.findViewById(R.id.verse);
               share = (ImageView) v.findViewById(R.id.share);
                /*speakverse = (ImageView) v.findViewById(R.id.speakverse);*/
            addfavoruite=(ToggleButton)v.findViewById(R.id.adbookmark);
            linearLayout=(LinearLayout)v.findViewById(R.id.layout);



            }


        }
        public boolean CheckIsDataAlreadyInDBorNot(String TableName,  String dbfield, String fieldValue) {

            mDBHelper = new DatabaseHelper(activity);
            mDb = mDBHelper.getReadableDatabase();
            String Query = "Select * from " + TableName + " where " + dbfield + " = " + fieldValue;
            Cursor cursor = mDb.rawQuery(Query, null);
            if(cursor.getCount() <= 0){
                cursor.close();

                Toast.makeText(activity, "false", Toast.LENGTH_SHORT).show();
                return false;
            }else {

                Toast.makeText(activity, "TRUE", Toast.LENGTH_SHORT).show();

            }
            cursor.close();


            return true;
        }
        public  void opecolorpicker(){



        }

    }


My activity class

package bible.swordof.God;

import android.content.Intent;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Color;
import android.support.annotation.NonNull;
import android.support.design.widget.NavigationView;
import android.support.v4.app.Fragment;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.GridView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;

import es.dmoral.toasty.Toasty;

public class ALLVERSE extends AppCompatActivity  implements NavigationView.OnNavigationItemSelectedListener {
    private ListView mylistview;
    private ArrayList<String>versenumber;
    private ArrayList<String>verselist;
    private ArrayList<String>id;
    private  ArrayList<String>refernce;
    private DatabaseHelper mDBHelper;
    private SQLiteDatabase mDb;
    private int booknumber;
    private  int chapternumber;
    private  String bookname;
    private TextView booknametitle;
    private  FullverseAdopter fullverseAdopter;



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



        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        booknametitle=findViewById(R.id.bookname);

        Intent mIntent = getIntent();
        booknumber = mIntent.getIntExtra("Boooknumber",0);
        chapternumber= mIntent.getIntExtra("Chapternumber", 0);
        bookname=mIntent.getStringExtra("Bookname");

        booknametitle.setText(bookname.toString() +"   "+  chapternumber);


        //Toast.makeText(this, ""+bookname, Toast.LENGTH_SHORT).show();
        setSupportActionBar(toolbar);
        toolbar.setTitle("ALL VERSE");


        setSupportActionBar(toolbar);
        if (getSupportActionBar() != null) {
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            getSupportActionBar().setDisplayShowHomeEnabled(true);
        }

        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.addDrawerListener(toggle);
        toggle.syncState();

        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);
        setData();

        mylistview=findViewById(R.id.mylistview);


fullverseAdopter=new FullverseAdopter(ALLVERSE.this,R.layout.versedisplayrow,versenumber,verselist,refernce,id);


        mylistview.setAdapter(fullverseAdopter);


        mylistview.setOnItemClickListener(new AdapterView.OnItemClickListener(){


            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                int index=position+1;
                Toast.makeText(ALLVERSE.this, ""+index, Toast.LENGTH_SHORT).show();



            }
        });



    }




    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // handle arrow click here
        if (item.getItemId() == android.R.id.home) {
            onBackPressed();

        }

        return super.onOptionsItemSelected(item);
    }




    private void setData() {
        versenumber=new ArrayList<>();
        verselist=new ArrayList<>();
        refernce=new ArrayList<>();
        id=new ArrayList<>();

        mDBHelper = new DatabaseHelper(this);
        mDb = mDBHelper.getReadableDatabase();
        Cursor cursor = mDb.rawQuery("SELECT id, v, t from t_kjv where b="+booknumber+" AND c="+chapternumber+";", new String[]{});
        if(cursor!=null && cursor.getCount() > 0)
        { if (cursor.moveToFirst())
        {
            do {
                id.add(cursor.getString(0));
                versenumber.add(cursor.getString(1));
                verselist.add(cursor.getString(2));

                refernce.add(bookname+" "+chapternumber);

            }

            while (cursor.moveToNext());
        }
        }
    }

    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
        // Handle navigation view item clicks here.
        Fragment fragment;
        int id = item.getItemId();

        if (id == R.id.home) {

            Intent intent=new Intent(this,MainActivity.class);
            startActivity(intent);

        } else if (id == R.id.favoruite)
        { Intent intent=new Intent(this,Favourite.class);
            startActivity(intent);
        }  else if (id == R.id.nav_manage) {

        } else if (id == R.id.nav_share) {

        } else if (id == R.id.nav_send) {

        }
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
        return true;
    }

}
Martin Spamer
  • 5,437
  • 28
  • 44
leoking
  • 23
  • 4

0 Answers0