java - 如何从 ArrayList 在 ListView 上显示员工详细信息?

标签 java android

这里我采用了三个ArrayList(EmpName、EmpID 和EmpPhone)。 在此,我在每个数组列表中存储 5 个数据,之后我试图显示 listview 上的所有数据就像 ListView 的每一行中都会有 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;
        }

    }
}

最佳答案

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

  1. 管理单个 ArrayList: 管理同一个对象的不同 ArrayList 会很难管理。就像你正在管理3个ArrayList来存储员工信息一样。相反,您应该管理一个 ArrayList,其中 Employee 是一个类。
  2. 获取特定的Employee对象:您可以通过positiongetView()方法中获取特定的Employee对象。
  3. 您正在自定义适配器的 getView() 方法中创建 ArrayAdapter。根本不需要。

而且您的代码需要进行如此多的更改,最好您购买任何 Android 书籍并学好 Android 编程。

关于java - 如何从 ArrayList 在 ListView 上显示员工详细信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21326961/

相关文章:

java - 为什么JVM不能在运行时加上synchronized/volatile/Lock?

android - 额外的未决 Intent 丢失

android - ListView 在列表项 Android 中显示间隙

javascript - 部署后的 Ionic 应用程序给出 ReferenceError : Promise is not defined

java - 使用Get和Set时是否可以应用搜索功能?

java - 替代控制结构

android - 如何在 Canvas 上绘制多个位图

android - Quora 移动网站如何设计 Android UI 元素的样式?

java - 我的 Android 应用程序在退出/第二次打开时崩溃

java - 绘图表面、unlockCanvasAndPost 和 IllegalArgumentException