2016-05-23 10 views
0

Ich habe eine Listenansicht, in der ich die editText nur an erster Stelle deaktivieren möchte. Dies ist, was ich getan habe:android deaktivieren editText in einem Listenansicht an bestimmten Position

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

    final PatientView patientView; 

    if(convertView==null){ 
     LayoutInflater inflater=LayoutInflater.from(context); 
     convertView=inflater.inflate(R.layout.lay_add_session_view,null); 
     patientView=new PatientView(); 
     patientView.edtSessionDescription= (EditText) convertView.findViewById(R.id.edtSessionDescription); 
     patientView.edtSessionNumber= (EditText) convertView.findViewById(R.id.edtSessionNumber); 
     patientView.txtSessionTime= (TextView) convertView.findViewById(R.id.txtSessionTime); 
     patientView.btnAdd= (Button) convertView.findViewById(R.id.btnAdd); 
     patientView.btnDelete= (Button) convertView.findViewById(R.id.btnDelete); 

     convertView.setTag(patientView); 
    } else { 
     patientView= (PatientView) convertView.getTag(); 
    } 

    patientView.edtSessionNumber.setText(modelPatientArrayList.get(position).getSessionNumber()); 
    patientView.edtSessionNumber.setTag(position); 
    patientView.edtSessionDescription.setText(modelPatientArrayList.get(position).getSessionDescription()); 
    patientView.txtSessionTime.setText(modelPatientArrayList.get(position).getTime()); 



    if(0==(Integer)patientView.edtSessionNumber.getTag()){ 
     patientView.edtSessionNumber.setEnabled(false); 
    } 

    patientView.btnAdd.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Log.e("tag position",(Integer) patientView.edtSessionNumber.getTag()+""); 
      updateFirstSession(modelPatientArrayList.get(position), patientView.edtSessionDescription.getText().toString()); 

      modelPatientArrayList.clear(); 
      modelPatientArrayList.addAll(dbUtil.getPatientSession()); 
      patientView.btnAdd.setText("edit"); 
      patientView.btnAdd.setTag(position); 
      notifyDataSetChanged(); 

     } 
    }); 

    patientView.btnDelete.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      deleteFromDataBase(modelPatientArrayList.get(position)); 
      modelPatientArrayList.clear(); 
      modelPatientArrayList.addAll(dbUtil.getPatientSession()); 
      notifyDataSetInvalidated(); 
     } 
    }); 

    return convertView; 
} 

Aber das Problem ist es auch EditText andere Ansicht deaktivieren nach dem Scrollen. Kann mir bitte jemand sagen was ich falsch mache.

Antwort

0

Wie Listview-Wieder verwendet die Ansichten, so dass Sie Code für beide Fälle

patientView.edtSessionNumber.setEnabled((position == 0) ? false : true); 

happyCoding schreiben müssen;

+0

danke Mann, du bist großartig, nur meinen Tag gerettet – Shaan

0

Setzen Sie diesen Code, sollte Ihr prelem lösen. if (position == 0) patientView.edtSessionNumber.setEnabled (false);

+0

Ich habe versucht, aber es deaktiviert auch die 7 Position edittext – Shaan

+0

Put patientView.edtSessionNumber.setTag (Position); innerhalb der Initialisierung von convertView –

Verwandte Themen