Pergunta

I am storing some ratings in database.Whenever seekbar is moved then those ratings are displayed in textview.But the problem is that whenever I moved back the thumb then backward values are not displayed.It shows only only last value.How can I display ratings when I move the thumb in backward direction. The code that I have tried is-

public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) 
    {
        view = inflater.inflate(R.layout.interval, container, false);
        seekbar=(SeekBar)view.findViewById(R.id.seekBar1);
        ques = (TextView)view. findViewById(R.id.question);
        textrating=(TextView)view.findViewById(R.id.textRating);
        /*l1=(LinearLayout)view.findViewById(R.id.linear);*/
        db=new DatabaseHandler(getActivity());
        retrieveQuestion();
        retrieveRating();
        seekbar.setProgress(0);
        seekbar.incrementProgressBy(diff);
        seekbar.setMax(ratinglast);

        seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener()
        {

            @Override
            public void onProgressChanged(SeekBar seekbar, int progress, boolean fromuser) 
            {
                 Log.e("DEBUG", "Progress is: "+progress);
                 if(j<len)
                 {
                     progress=rating[j];
                     j++;
                     textrating.setText(""+progress);
                 }




            }

            @Override
            public void onStartTrackingTouch(SeekBar seekbar) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekbar) 
            {
                // TODO Auto-generated method stub


        }

        });


         return view;
    }

    void retrieveQuestion()
    {
        db.open();
        Cursor c=db.getQuestion(username,surveyName,selectedQues,question_no);
        if(c.moveToFirst())
        {
            int index=c.getColumnIndex("question");
            question1= c.getString(index);
            ques.setText(question1);
        }

    }

    public void retrieveRating()
    {
        Cursor c=db.getAnswer(username, surveyName, selectedQues, question_no);
        len=c.getCount();
        Log.e("len",""+len);
        if(c.moveToFirst())
        {
            do
            {
                int index=c.getColumnIndex("answer");
                rating[i]=c.getInt(index);
                Log.e("i",""+i);
                Log.e("rating in do while",""+rating[i]);
                i++;
            }while(c.moveToNext());
        }
        rating1=rating[0];
        rating2=rating[1];
        diff=rating2-rating1;
        Log.e("diff",""+diff);
        ratinglast=rating[len-1];
        Log.e("ratinglast",""+ratinglast);
    }
} 
Foi útil?

Solução

I have found an alternate solution for my problem-

The code that I have implemented is:

 public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) 
                {
                    view = inflater.inflate(R.layout.interval, container, false);
                    seekbar=(SeekBar)view.findViewById(R.id.seekBar1);
                    ques = (TextView)view. findViewById(R.id.question);
                    textrating=(TextView)view.findViewById(R.id.textRating);
                    db=new DatabaseHandler(getActivity());
                    retrieveQuestion();
                    retrieveRating();
                    seekbar.setProgress(0);
                    //ratinglast is last rating
                    seekbar.setMax(ratinglast);

                    seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener()
                    {

                        @Override
                        public void onProgressChanged(SeekBar seekbar, int progress, boolean fromuser) 
                        {
                             Log.e("DEBUG", "Progress is: "+progress);
                            //diff is difference between two ratings.
                             progress = ((int)Math.round(progress/diff ))*diff;
                             seekbar.setProgress(progress);
                             textrating.setText(progress + "");
            }
            @Override
                        public void onStartTrackingTouch(SeekBar seekbar) {
                            // TODO Auto-generated method stub
                        }

                        @Override
                        public void onStopTrackingTouch(SeekBar seekbar) 
                        {

                        }
                    });
                    return view;
                }
        //Method to retrieve rating from sqlite database
        public void retrieveRating()
            {
                Cursor c=db.getAnswer(username, surveyName, selectedQues, question_no);
                len=c.getCount();
                Log.e("len",""+len);
                if(c.moveToFirst())
                {
                    do
                    {
                        int index=c.getColumnIndex("answer");
                        rating[i]=c.getInt(index);
                        Log.e("i",""+i);
                        Log.e("rating in do while",""+rating[i]);
                        i++;
                    }while(c.moveToNext());
                }
                rating1=rating[0];
                rating2=rating[1];
                diff=rating2-rating1;
                Log.e("diff",""+diff);
                ratinglast=rating[len-1];
                Log.e("ratinglast",""+ratinglast);
            }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top