2016-05-12 10 views
0

Hier erstreckt ArrayAdapter ist der Code für erweiterte ArrayAdapter Klasse:Unable Seite melden Sie sich erstellen, indem Sie mit Listview

public class MultiAdapter extends ArrayAdapter<String> { 

private final Activity a1; 
private final String[] s1; 


public MultiAdapter(Activity a, String[] s){ 
    super(a,R.layout.loginlist,s); 
    s1=s; 
    a1=a; 
} 

    @Override 
    public View getView(int i,View v,ViewGroup vg) { 
    LayoutInflater li = a1.getLayoutInflater(); 
    View v1 = li.inflate(R.layout.loginlist, null, true); 

    TextView tv; 
    tv = (TextView) v1.findViewById(R.id.textView1); 
    tv.setText(s1[i]); 
    EditText et; 
    et = (EditText) v1.findViewById(R.id.editText1); 

    if (tv.getText().equals("Name")||tv.getText().equals("User Name")||tv.getText().equals("Company")) { 
     et.setInputType(InputType.TYPE_CLASS_TEXT); 
    } 
    if (tv.getText().equals("Phone")) { 
     et.setInputType(InputType.TYPE_CLASS_PHONE); 
    } 
    if (tv.getText().equals("E-mail")||tv.getText().equals("Company E-mail")) { 
     et.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS); 
    } 
    if (tv.getText().equals("Password")||tv.getText().equals("Re-type Password")) { 
     et.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_VARIATION_PASSWORD); 
    } 


    return v1; 
    } 



} 

loginlist.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="TextView" /> 

<EditText 
    android:id="@+id/editText1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:ems="10" > 

</EditText> 

</LinearLayout> 

Was passiert, ist, dass, wenn ich auf die Schaltfläche "Name", "Firma" oder "Benutzername" edittext Der Cursor springt automatisch zum Passwort und tippt dann das Passwort edittext Feld erneut ein. Dies geschieht nicht in anderen Bereichen. Was verursacht das?

+1

Warum Sie eine einfache Anmeldung mit Adapter und Listenansicht abschließen. Sie können es mit einfachen linearen Layout erreichen – Sush

+0

Weil es einfacher ist. –

+0

U kann einfaches lineares Layout verwenden und daran arbeiten. Da kann ich sehen, dass Sie nicht das richtige Adapterkonzept verwenden. Zuerst müssen Sie überprüfen, um für null zu konvertieren, wenn null, dann für die Bevölkerung der Ansicht von Layout-Inflator gehen sonst gehen Sie Ansicht Halter Stub Konzept. – Sush

Antwort

0

@Override Öffentlichkeit getView (int Position, Ansicht convertView, Viewgroup parent) {Ansicht Reihe; if (null == convertView) {

Zeile = mlnflaetter.inflate (R.layout.listitem, null); } sonst

{row = convertView; } TextView tv = (Textansicht) row.findViewById (android.R.id.text1); tv.setText (Elemente [Position]); tv.setTypeface (Schriftart);

Rücksprung; }

Dies, wie Sie Ihre getview implementieren müssen. Überprüfen Sie den Null-Check in der Konvertierungsansicht. Aber ich würde Ihnen wärmstens empfehlen, das lineare Layout zu verwenden.

+0

Ich habe implementiert, was Sie gesagt haben. Es funktioniert immer noch nicht. logcat: November 05-16: 12: 21.700: W/IInputConnectionWrapper (25175): getTextAfterCursor auf inaktive InputConnection November 05-16: 12: 40,540: W/IInputConnectionWrapper (25175): getTextAfterCursor auf inaktive InputConnection –