2014-01-24 72 views
0

這裏我拿三個ArrayList(EmpName,EmpID和EmpPhone)。 在這裏,我在每個數組列表中存儲5個數據,之後我試圖顯示列表視圖中的所有數據,如列表視圖的每一行中將會有3個數據。但我不是 獲得確切的輸出。在這裏我的整個代碼...請幫助...謝謝。如何在ArrayList上顯示ListView上的員工詳細信息?

activity_main.xml中

<ListView 
      android:id="@+id/main_listView1" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" > 
    </ListView> 

custom_checkbox.xml

<TextView 
     android:id="@+id/custom_empname_textView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 

     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <TextView 
     android:id="@+id/custom_empid_textView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 

     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <TextView 
     android:id="@+id/custom_empphone_textView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 

     android:textAppearance="?android:attr/textAppearanceLarge" /> 

MainActivity.java

public class MainActivity extends Activity { 


    ArrayList<String> EmpName; 
    ArrayList<String> EmpID; 
    ArrayList<String> EmpMobile; 

    void getEmpDetails() { 

     EmpName.add("Jhon"); 
     EmpName.add("Joy"); 
     EmpName.add("Jain"); 
     EmpName.add("Jason"); 
     EmpName.add("Joky"); 

     EmpID.add("1001"); 
     EmpID.add("1002"); 
     EmpID.add("1003"); 
     EmpID.add("1004"); 
     EmpID.add("1005"); 

     EmpMobile.add("8179789878"); 
     EmpMobile.add("8179789478"); 
     EmpMobile.add("8179789378"); 
     EmpMobile.add("8179789278"); 
     EmpMobile.add("8179789678");   
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     ListView list = (ListView)findViewById(R.id.main_listView1); 



    } 

    class ListAdapter extends BaseAdapter { 

     @Override 
     public int getCount() { 
      // TODO Auto-generated method stub 
      return EmpName.size(); 
     } 

     @Override 
     public Object getItem(int arg0) { 
      // TODO Auto-generated method stub 
      return null; 
     } 

     @Override 
     public long getItemId(int arg0) { 
      // TODO Auto-generated method stub 
      return 0; 
     } 

     @Override 
     public View getView(int index, View v, ViewGroup vg) { 
      // TODO Auto-generated method stub 
      v = getLayoutInflater().inflate(R.layout.custom_checkbox, null); 

      TextView t1 = (TextView)v.findViewById(R.id.custom_empname_textView); 
      TextView t2 = (TextView)v.findViewById(R.id.custom_empid_textView); 
      TextView t3 = (TextView)v.findViewById(R.id.custom_empphone_textView); 

      EmpName = new ArrayList<String>(); 
      EmpID = new ArrayList<String>(); 
      EmpMobile = new ArrayList<String>(); 

      getEmpDetails(); 

      ArrayAdapter<String> a1 = 
        new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, EmpName); 

      ArrayAdapter<String> a2 = 
        new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, EmpID); 

      ArrayAdapter<String> a3 = 
        new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, EmpMobile); 

      t1.setText((CharSequence) a1); 
      t2.setText((CharSequence) a2); 
      t3.setText((CharSequence) a3); 

      return null; 
     } 

    } 
} 

回答

1

基於您提出的問題和問題,我建議你以下幾點:

  1. 管理單一的ArrayList: 針對同一對象管理不同的ArrayList將是很難管理。就像你正在管理3個ArrayList來存儲Employee的信息一樣。相反,你應該管理一個ArrayList,其中Employee是一個類。
  2. 獲取特定的員工對象:您可以通過positiongetView()方法內部獲得特定的Employee對象。
  3. 您正在創建自定義適配器的getView()方法內的ArrayAdapter。根本不需要。

而且你的代碼需要做很多修改,所以你最好拿到任何安卓手冊,並且學好Android編程。

0

您的代碼無法正常工作,因爲您使用的適配器錯誤(並且根本不設置爲ListView)。 不幸的是,你的代碼需要太多的改變(例如,你應該改變新的對象Employee,你應該將這些對象的數組傳遞給適配器,並將Employee的值賦給項目視圖),以便在我的答案中解決它,所以只需閱讀好教程關於適配器,然後嘗試重新編寫代碼:

http://www.javacodegeeks.com/2013/09/android-listview-with-adapter-example.html

http://www.vogella.com/tutorials/AndroidListView/article.html

希望它能幫助。

相關問題