如何在ArrayList中显示员工关于ListView的详细信息?

时间:2014-01-24 07:34:37

标签: java android

这里我采用三个ArrayList(EmpName,EmpID和EmpPhone)。  在这里,我在每个arraylist中存储5个数据,然后我试图显示 列表视图中的所有数据,如列表视图的每一行,将有3个数据。但我不是 获得准确的输出。在这里我的整个代码......请帮助......谢谢。

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;
        }

    }
}

2 个答案:

答案 0 :(得分:1)

根据您的问题和疑问,我建议您使用以下几点:

  1. 管理单个ArrayList: 管理同一对象的不同ArrayLists很难管理。就像你管理3 ArrayList一样存储Employee的信息。相反,您应该管理Employee是一个类的单个ArrayList。
  2. 获取特定的Employee对象:您可以getView()position方法中获取特定的Employee对象。
  3. 您正在自定义适配器的getView()方法中创建ArrayAdapter。根本不需要。
  4. 您的代码需要进行大量更改,您可以更好地获取任何Android书籍并熟练掌握Android编程。

答案 1 :(得分:0)

您的代码无效,因为您使用的适配器错误(并且根本没有设置为ListView)。 不幸的是,您的代码需要进行太多更改(例如,您应该更改新对象Employee,您应该将这些对象的数组传递给适配器并将Employee的值更改为项目视图)以便在我的答案中解析它,所以只需阅读有关适配器并尝试再次编写此代码:

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

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

希望它有所帮助。