mardi 19 mai 2015

update listview when click favorites button

I want when click the button btn in class ListViewAdapter, updates my sqlite and changes the background of btn , When MainActivity start and the button is clicked first,is correctly. but when I scroll the list, the background of btn returns to its original state and in addition When the button is clicked for a second time no change are done. In other words, do not update my listview. How to resolve this?

Where and how do I use adapter.notifyDataSetChanged();

after onclick in ListViewAdapter? how fetch adapter at MyActivity on myListViewAdapter

public class ListViewAdapter extends BaseAdapter {

// Declare Variables
Context mContext;
LayoutInflater inflater;
private List<myitems> worldpopulationlist = null;
private ArrayList<myitems> arraylist;
int myfavorit =0;
DataBaseHelper myDbHelper;
SQLiteDatabase db;
Cursor mCursor;

public ListViewAdapter(Context context, List<myitems> worldpopulationlist) {
    mContext = context;
    this.worldpopulationlist = worldpopulationlist;
    inflater = LayoutInflater.from(mContext);
    this.arraylist = new ArrayList<myitems>();
    this.arraylist.addAll(worldpopulationlist);
}

public class ViewHolder {
    TextView rank;
    TextView country;
    TextView population;
    Button btn;

}

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

@Override
public myitems getItem(int position) {
    return worldpopulationlist.get(position);
}

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

public View getView(final int position, View view, ViewGroup parent) {
    final ViewHolder holder;
    if (view == null) {
        holder = new ViewHolder();

    view = inflater.inflate(R.layout.myitems_list, null);
        // Locate the TextViews in listview_item.xml
        holder.rank = (TextView) view.findViewById(R.id.txt25);
        holder.btn=(Button) view.findViewById(R.id.btnfavor);
        holder.country = (TextView) view.findViewById(R.id.txt26);


        view.setTag(holder);
    } else {
        holder = (ViewHolder) view.getTag();
    }

    holder.rank.setText(worldpopulationlist.get(position).gettitle());
    holder.country.setText(worldpopulationlist.get(position).getshomare()+"-");

    myfavorit=worldpopulationlist.get(position).getfavoir();


    if(myfavorit==0){
        holder.btn.setBackgroundResource(R.drawable.ic_launcher);
    }

    else{
        holder.btn.setBackgroundResource(R.drawable.star);

    }




    holder.btn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            myDbHelper = new DataBaseHelper(mContext.getApplicationContext());
            myDbHelper = new DataBaseHelper(mContext);

            try {
                myDbHelper.createDataBase();}                   

            catch (IOException ioe) {
                throw new Error("Unable to create database");
                    }
            try {myDbHelper.openDataBase();}        
            catch (SQLException sqle) {sqle.printStackTrace();

            }

            String rr=worldpopulationlist.get(position).getprimaryid();
            db = myDbHelper.getWritableDatabase();

        switch (worldpopulationlist.get(position).getfavoir()) {
        case 0:

                mCursor= db.rawQuery("UPDATE khotbe SET favorites = 1 WHERE my_id ="+rr+"  ;",null);
                mCursor.moveToFirst();
                holder.btn.setBackgroundResource(R.drawable.star);              
                Toast.makeText(mContext, "به لیست علاقه مندی ها اضافه شد", Toast.LENGTH_SHORT).show();

            break;
            case 1:
                mCursor= db.rawQuery("UPDATE khotbe SET favorites = 0 WHERE my_id ="+rr+"  ;",null);
                mCursor.moveToFirst();
                holder.btn.setBackgroundResource(R.drawable.ic_launcher);
                Toast.makeText(mContext, "از لیست علاقه مندی های حذف گردید", Toast.LENGTH_SHORT).show();
                break;

        default:
            break;
        }

        }
    });

and class myitems

public class myitems {

    private String title;
    private String field_translation_id;
    private String shomare;
    private String primaryid;

    private int favorit;


    public myitems(String title,String field_translation_id,String shomare,String primaryid,int favorit){
        this.title=title;
        this.field_translation_id=field_translation_id;
        this.shomare=shomare;
        this.primaryid=primaryid;
        this.favorit=favorit;

    }

    public String gettitle(){


        return this.title;

    }

public String get_field_translation_id(){


        return this.field_translation_id;

    }

    public String getshomare()
    {


    return this.shomare;


    }
    public String getprimaryid(){


    return this.primaryid;

}

    public int getfavoir(){

        return this.favorit;


    }



}

and MainActivity

    @Override
    protected void onResume() {
        super.onResume();
ArrayList<myitems> arraylist = new ArrayList<myitems>();
        db = myDbHelper.getReadableDatabase();

        mCursor= db.rawQuery("SELECT field_translation_id_value,title,translate,my_id,favorites  FROM khotbe"
                + " WHERE translate ="+translate+" ORDER BY field_translation_id_value ASC   ;",null);

        int i = 1;

        mCursor.moveToFirst();
        while (mCursor.isAfterLast() == false) {

            iran.add(mCursor.getString(1));
            arr_intityid.add(mCursor.getString(0));
            primarykeyarrlist.add(mCursor.getString(3));
            favor.add(mCursor.getInt(4));
            arrshomare.add(""+i++);
            mCursor.moveToNext();
}

             fa= new String [iran.size()];
            fa=iran.toArray(fa);

           mysid= new String [arr_intityid.size()];                     
           mysid=arr_intityid.toArray(mysid);

           primarykeyarr= new String [primarykeyarrlist.size()];                        
           primarykeyarr=primarykeyarrlist.toArray(primarykeyarr);

           myshomare=new String[arrshomare.size()];
           myshomare=arrshomare.toArray(myshomare);

           favorit =new int[favor.size()];
           for (int t= 0; t < favor.size(); t++) {

               favorit[t]=favor.get(t).intValue();

        }

           mCursor.moveToPosition(0);
         for (int j = 0; j < fa.length; j++) {

               myitems qqq= new myitems(fa[j],mysid[j],myshomare[j],primarykeyarr[j],favorit[j]);

               arraylist.add(qqq);

           }

           adapter=new ListViewAdapter(this, arraylist);
           mylist.setAdapter(adapter);

           mCursor.requery();
           adapter.notifyDataSetChanged();

Aucun commentaire:

Enregistrer un commentaire