마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

어댑터에 연결된 버튼을 한번누르면 변수가 증가하는데 한번이상누르면 변수증가가안돼요..

0 추천

우선 로그기록 부터 보여주자면 이런식으로 버튼을 처음눌렀을땐 click값이 증가해서 db에 업데이트가 되는데.. 그 이후론 되지않는데 뭐가 문제일까요.. 저는 리스트뷰를 사용했고 Adapter로 연결해서 각 리스트뷰마다 버튼이있는 형태입니다.. 뭐가 문제인지 모르겠어요 ㅠㅠ

저는 go 버튼을 누르면 프로그래스바가 증가하게 하고싶은데 증가는했는데.. 두번이상클릭하면 더이상 증가가안되고.. 다른 액티비티 다녀와야 다시 한번 증가가 되더라고요 ㅠㅠ 문제가뭘까요

12-06 00:10:10.100 14073-14073/? D/ASDF: UPDATE company SET click = 1 WHERE _id =  1

12-06 00:10:10.276 14073-14073/? D/ASDF: UPDATE company SET click = 2 WHERE _id =  1
12-06 00:10:10.506 14073-14073/? D/ASDF: UPDATE company SET click = 2 WHERE _id =  1
12-06 00:10:10.721 14073-14073/? D/ASDF: UPDATE company SET click = 2 WHERE _id =  1

 

  public DBAdapter3(Context context, Cursor c) {
        super(context, c);
    }

    public long getItemId(int position){
        return position;
    }
    @Override
    public void bindView(View view, final Context context, Cursor cursor) {

        Resources res = view.getResources();
       
        final ProgressBar progressbar =(ProgressBar)view.findViewById(R.id.progressbar);
        final Button btn_go =(Button)view.findViewById(R.id.progressgo);
       
        final int num =cursor.getInt(cursor.getColumnIndex("count"));
        final int position = cursor.getInt(cursor.getColumnIndex("_id"));
        final int pass = cursor.getInt(cursor.getColumnIndex("click"));


        do {
            try {
                progressbar.setProgress((pass * 100) / num);

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        while (cursor.moveToNext());

        do { (이부분과 관련된 선언한 변수명관련해서는 삭제함..프로그래스바 증가부분이기때문에 이부분은 제외하고봐주세요!)
            try {
                if (end > 0) {
                    // String name = (String)tx_name.setTextColor(Color.DKGRAY);
                    //tx_num.setTextColor(Color.WHITE);
                    tx_name.setTextColor(Color.parseColor("#8C8C8C"));
                    //tx_num.setBackgroundColor(Color.parseColor("#F2F2F2"));
                    layout.setBackgroundColor(Color.parseColor("#F2F2F2"));
                    btn_go.setVisibility(View.INVISIBLE);
                    btn_end.setVisibility(View.INVISIBLE);
                    progressbar.setProgressDrawable(draw);
                } else {
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }while (cursor.moveToNext());



        btn_go.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                try {
                    dbmanager = new DBManager(view.getContext());
                    sqlitedb = dbmanager.getWritableDatabase();


                    final int CLICK_UP = pass + 1;
                    String pass_modify = "UPDATE company SET click = " + CLICK_UP + " WHERE _id =  " + position;
                    sqlitedb.execSQL(pass_modify);
                    Log.d("ASDF", pass_modify);

                    progressbar.setProgress((CLICK_UP * 100) / num);

                } catch (Exception e) {
                    e.printStackTrace();
                }


            }

        });

        btn_end.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                AlertDialog.Builder alertDlg = new AlertDialog.Builder(view.getContext());
                alertDlg.setTitle("진행을 종료하시겠습니까?");
                dbmanager = new DBManager(view.getContext());
                sqlitedb = dbmanager.getWritableDatabase();

                // '예' 버튼이 클릭되면
                alertDlg.setPositiveButton("예", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        int PUSH_END = end + 1;
                        String end_modify = "update company set end = " + PUSH_END + " WHERE _id = " + position;
                        Log.d("ASDF", end_modify);
                        sqlitedb.execSQL(end_modify);

                        //tx_num.setTextColor(Color.WHITE);
                        tx_name.setTextColor(Color.parseColor("#8C8C8C"));
                        // tx_num.setBackgroundColor(Color.parseColor("#F2F2F2"));
                        layout.setBackgroundColor(Color.parseColor("#F2F2F2"));
                        btn_go.setVisibility(View.INVISIBLE);
                        btn_end.setVisibility(View.INVISIBLE);
                        progressbar.setProgressDrawable(draw);


                    }
                });
                // '아니오' 버튼이 클릭되면
                alertDlg.setNegativeButton("아니오", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();  // AlertDialog를 닫는다.
                    }
                });

                alertDlg.show();

                //return true;

            }
        });


        //notifyDataSetChanged();
        onContentChanged();

    }
}


 

뚜루루루둡 (1,130 포인트) 님이 2016년 12월 5일 질문

1개의 답변

0 추천

안녕하세요 

변수를 final로 선언하셔서 그런것 같습니다.

final 예약어 사용하지 않으시면 될 것 같은데요??

 final int pass = cursor.getInt(cursor.getColumnIndex("click"));
히로시 (10,800 포인트) 님이 2016년 12월 6일 답변
...