这里我采用了三个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;
}
}
}
最佳答案
根据您的疑问和问题,我建议您以下几点:
- 管理单个 ArrayList: 管理同一个对象的不同 ArrayList 会很难管理。就像你正在管理3个ArrayList来存储员工信息一样。相反,您应该管理一个 ArrayList,其中 Employee 是一个类。
- 获取特定的Employee对象:您可以通过
position
在getView()
方法中获取特定的Employee对象。 - 您正在自定义适配器的 getView() 方法中创建 ArrayAdapter。根本不需要。
而且您的代码需要进行如此多的更改,最好您购买任何 Android 书籍并学好 Android 编程。
关于java - 如何从 ArrayList 在 ListView 上显示员工详细信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21326961/