Click here to Skip to main content
15,887,135 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi all!
I've got a problem! I have a ListView which fills by CursorAdapter. Rows into ListView have 2 TextViews and 2 EditTexts. When I press on EditText(which one it doesn't matter), row which contain this EditText get focus. Then I insert some value and put it into my database. After that I do requery. But every time I see different selected row. Often it is at the end of visible ListView. What's wrong?

Code snippet:
@Override
   public View newView(Context context, Cursor cursor, ViewGroup parent) {

       final LayoutInflater inflater = LayoutInflater.from(context);
       View v = inflater.inflate(layout, parent, false);

       ExEditText day_text = (ExEditText) v.findViewById(R.id.dayreadout_entry);
       ExEditText night_text = (ExEditText) v.findViewById(R.id.nightreadout_entry);

       v.setOnClickListener(new OnClickListener() {

           public void onClick(View v) {

               TransitionDrawable drawable = (TransitionDrawable) v.getBackground();
               if(drawable.getId(0)!=-1){
                   drawable =ExchangeDrawable(drawable);
                   UnsetLayerID(drawable);
               }
               drawable.startTransition(animSpeed);
               if(prevRow!=null && prevRow!=v){
                   CloseEditMode();
                   LeaveRow(prevRow);
               }
               prevRow=v;
               abonentAddress.setText(TestAndroid.dbs.GetAddressText(
                       ((ExEditText)v.findViewById(R.id.dayreadout_entry)).getIdentifyingNumber()));
           }
       });

       day_text.setOnClickListener(new OnClickListener() {
           public void onClick(View v) {
               ExEditText curEditText = (ExEditText)v;
               if(!curEditText.isSelected()){
                 ((View)v.getParent()).performClick();

                 if(prevEditText!=null){
                   prevEditText.setUnselective();
                 }                   prevEditText=ExEditText)v;
               }
               else{
                 curEditText.setUnselective();
                 prevEditText=null;

                 SaveValue(curEditText);
               }
           }
       });

       night_text.setOnClickListener(new OnClickListener() {
           public void onClick(View v) {

               ExEditText curEditText = (ExEditText)v;
               if(!curEditText.isSelected()){
                 ((View)v.getParent()).performClick();
                 curEditText.setSelectivity();
                 if(prevEditText!=null){
                   prevEditText.setUnselective();
                 }                   prevEditText=ExEditText)v;
               }
               else{
                curEditText.setUnselective();
                    prevEditText=null;
                    SaveValue(curEditText);
               }
           }
       });
       return v;
   }


@Override
   public void bindView(View v, Context context, Cursor c) {

       int id = c.getInt(c.getColumnIndex("_id"));
       String home = c.getString(c.getColumnIndex("home"));
       String flat = c.getString(c.getColumnIndex("flat"));
       String day = c.getString(c.getColumnIndex("day"));
       String night = c.getString(c.getColumnIndex("night"));
       String skipped = c.getString(c.getColumnIndex("skipped"));

       TextView home_text = (TextView) v.findViewById(R.id.home_entry);
       if (home_text != null) {
           home_text.setText(home);

       }

       TextView flat_text = (TextView) v.findViewById(R.id.flat_entry);
       if (flat_text != null) {
           flat_text.setText(flat);
       }

      ExEditText day_text = (ExEditText) v.findViewById(R.id.dayreadout_entry);

       if (day_text != null) {

           day_text.setText(day);
               day_text.setIdentifyingNumber(id);
          }

       ExEditText night_text = (ExEditText) v.findViewById(R.id.nightreadout_entry);
       if (night_text != null) {
           night_text.setText(night);
               night_text.setIdentifyingNumber(id);
       }

       switch(c.getInt(c.getColumnIndex("type"))){
       case 0:
           day_text.setEnabled(false); night_text.setEnabled(false);
           break;
       case 1:
           day_text.setEnabled(true); night_text.setEnabled(false);
           break;
       case 2:
           day_text.setEnabled(false); night_text.setEnabled(true);
           break;
       case 3:
           day_text.setEnabled(true); night_text.setEnabled(true);
           break;
       default: break;
       }

    }


I tried to use cur.moveToPosition(curPosition);, but it doesn't work! Help me please!
Posted

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900