2012-03-17 8 views
1

私は、Android環境でのListViewを使用して小さなアプリケーションを書いていますが
は、私はアダプタクラスを書いたとしてgetViewメソッド()メソッドを実装しNullPointerExceptionがAndroidのListViewの

 <?xml version="1.0" encoding="utf-8"?> 

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" android:padding="1dp" android:orientation="vertical"> 

    <ListView android:id="@+id/lv1" android:layout_width="fill_parent" android:layout_height="0dp" 
android:layout_weight="1"/> 

<RelativeLayout android:id="@+id/ll5" android:background="#C5C1AA" android:layout_width="fill_parent" android:layout_height="wrap_content"> 
<Button android:paddingLeft="30dp" android:paddingRight="30dp" android:id="@+id/bt1" android:text="save" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_marginLeft="15dp" android:layout_marginTop="10dp" android:onClick="onclick"/> 
<Button android:paddingLeft="30dp" android:paddingRight="30dp" android:id="@+id/bt2" android:text="cancel" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_alignParentRight="true" android:layout_marginRight="15dp" android:layout_marginTop="10dp" android:onClick="onclick2"/> 
</RelativeLayout> 

</LinearLayout> 


、次のようにメインlayoutfileを書きましたやり方

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
switch (position) { 
case 0: 
    convertView = inflater.inflate(R.layout.list1, null); 
    break; 
case 1: 
    convertView=inflater.inflate(R.layout.list2,null); 
    break; 
default: 
    break; 
} 

return convertView; 
} 

次私は、次のようにlayoutfilesを書いた

list1.xml

<?xml version="1.0" encoding="utf-8"?> 

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

    <TextView android:layout_height="wrap_content" 
     android:layout_width="fill_parent" 
     android:text="Alarm name:" 
     android:textSize="15dp" 
     android:id="@+id/tv3" 
     android:layout_margin="5dp"/> 
    <EditText android:layout_height="wrap_content" 
     android:layout_width="fill_parent" 
     android:layout_below="@id/tv3" 
     android:id="@+id/et1" 
     android:singleLine="true" 
     android:layout_margin="5dp"/> 

    </RelativeLayout> 

list2.xml

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

    <TextView android:layout_height="wrap_content" 
     android:layout_width="fill_parent" 
     android:layout_margin="5dp" 
     android:text="Password:" 
     android:textSize="15dp" 
     android:id="@+id/tv4"/> 

    <EditText android:layout_height="wrap_content" 
     android:layout_width="fill_parent" 
     android:layout_below="@id/tv4" 
     android:id="@+id/et2" 
     android:layout_margin="5dp" 
     android:singleLine="true"/> 

     </RelativeLayout> 

私は

public void onclick(View v) 
{ 
    try{ 
     EditText et=(EditText)findViewById(R.id.et1); 
     String s1=et.getText().toString(); 
     if(s1.equals(""))s1="no name"; 
     Toast.makeText(getApplicationContext(), s1,Toast.LENGTH_SHORT).show(); 
     EditText et2=(EditText)findViewById(R.id.et2); 
     String s2=et2.getText().toString(); 
     if(s2.equals(""))s2="no password"; 
     Toast.makeText(getApplicationContext(), s2,Toast.LENGTH_SHORT).show(); 
     } 
    catch(Exception e) 
    { 
     Toast.makeText(getApplicationContext(), e.toString(),Toast.LENGTH_LONG).show(); 
    } 

} 

NullPointerExceptionがのonclick()メソッドで発生している...次のようにonclickの方法を書きましたet2にアクセスしてet1にアクセスする際に問題がなかった場合
私を助けてください!事前に 感謝:)

答えて

2

あなただけの1つのレイアウトを膨張されているが、onClick()には、両方のフィールドを参照してください。

EditText et=(EditText)findViewById(R.id.et); 
//      first one^
String s1=et.getText().toString(); 
if(s1.equals(""))s1="no name"; 
Toast.makeText(getApplicationContext(), s1,Toast.LENGTH_SHORT).show(); 
EditText et2=(EditText)findViewById(R.id.et2); 
//      second one^

あなたは1が使用されている条件を持って、そして1のみを参照する必要がありますそのうちの。

+0

レイアウトを1つだけ膨張させると、エミュレータで??? adapterclassは2つのレイアウトを展開する必要があります。 – Navaneeth

+0

あなたはそれをどこで行いますか?私はあなたのコード/レイアウトでそれを表示されません。 – MByD

0

最初のレイアウトを使用する最初の行をクリックすると、et2が存在せず、NullPointerExceptionがスローされます。

私はあなたが

+0

しかし、私は両方のEditiTextsからデータにアクセスするためにListViewの外のボタンをクリックしています – Navaneeth

0

ファーストをクリックどちら行あなたがそれらにアクセスできるようになりますどの、あなたのEditTextの同じ名前を付ける助言するあなたに2つ目のListViewを追加main.xml

<?xml version="1.0" encoding="utf-8"?> 

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" android:padding="1dp" android:orientation="vertical"> 

    <ListView android:id="@+id/lv1" android:layout_width="fill_parent" android:layout_height="0dp" 
android:layout_weight="1"/> 
<ListView android:id="@+id/lv2" android:layout_width="fill_parent" android:layout_height="0dp" 
android:layout_weight="1"/> 
    <RelativeLayout android:id="@+id/ll5" android:background="#C5C1AA" android:layout_width="fill_parent" android:layout_height="wrap_content"> 
    <Button android:paddingLeft="30dp" android:paddingRight="30dp" android:id="@+id/bt1" android:text="save" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_marginLeft="15dp" android:layout_marginTop="10dp" android:onClick="onclick"/> 
    <Button android:paddingLeft="30dp" android:paddingRight="30dp" android:id="@+id/bt2" android:text="cancel" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_alignParentRight="true" android:layout_marginRight="15dp" android:layout_marginTop="10dp" android:onClick="onclick2"/> 
    </RelativeLayout> 
    </LinearLayout> 

第二にしています、それぞれのリストを膨らませる必要がありますgetViewメソッドでgetViewクラスを2回(各リストビューに1つずつ)呼び出していることを確認する必要があります

+0

guiは醜いとなっています...しかし、それは動作します – Navaneeth

+0

私は今、 –

関連する問題