【发布时间】:2017-04-10 04:14:41
【问题描述】:
我有一个 Java 类,其中包含有关用户的信息(姓名、年龄、类别、标记)。我正在尝试创建一个列表视图来显示不同的用户(只有他们的姓名和年龄)。
由于某种原因,未显示列表视图。为什么?
MainActivity.java:
public class MainActivity extends AppCompatActivity {
private ListView listView;
private UserAdapter userAdapter;
private ArrayList<User> userList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
userList = new ArrayList<>();
DefaultList(); //calls default list function, with dummy values
listView = (ListView) findViewById(R.id.userListView);
//Associating the adapter with the monster list
userAdapter = new userAdapter(this, userList);
listView.setAdapter(userAdapter);
}
public boolean onCreateOptionsMenu(Menu menu){
return true;
}
//Initializes the list view with some default values, for testing purposes only
private void DefaultList(){
userList.add(new User("Nat", 17, "MBS", 4, "98"));
userList.add(new User("Dave", 27, "BIS", 1, "54"));
userList.add(new User("Gray", 21, "BIS", 2, "51"));
userList.add(new User("John", 20, "BIS", 1, "76"));
}
}
列表视图的自定义适配器:
public class UserAdapter extends BaseAdapter {
private Context currentContext;
private ArrayList<User> userList;
public static class ViewHolder {
TextView uName;
TextView uAge;
}
public UserAdapter(Context context, ArrayList<User> user){
currentContext = context;
userList = user;
}
public View getView(int i, View view, ViewGroup viewGroup) {
//If view not created, inflate the view
ViewHolder viewHolder;
if(view == null){
viewHolder = new ViewHolder();
LayoutInflater inflater = (LayoutInflater) currentContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.user_item, null);
//attach the ViewHolder to this view
viewHolder = new ViewHolder();
viewHolder.userName = (TextView) view.findViewById(R.id.uNameTextView);
viewHolder.userAge = (TextView) view.findViewById(R.id.uAgeTextView);
view.setTag(viewHolder);
}
else{
//View already created
viewHolder = (ViewHolder) view.getTag();
}
viewHolder.uName.setText(userList.get(i).getUserName());
viewHolder.uAge.setText(userList.get(i).getUserAge());
return view;
}
main_activity 的 XML 文件:
<ListView
android:id="@+id/userListView"
style="@style/Widget.AppCompat.ListView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentEnd="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginTop="10dp"
android:visibility="visible" />`
每个用户列表项的 XML:
<TextView
android:id="@+id/uNameTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="16dp"
android:layout_marginTop="20dp"
android:text="Name" />
<TextView
android:id="@+id/uAgeTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/uNameTextView"
android:layout_below="@+id/uNameTextView"
android:text="Age" />
我正在使用 Android Studio。
【问题讨论】:
-
安卓显示器有什么错误吗?
-
@ScottS 显示器上没有错误。当我运行应用程序时它显示一个空白屏幕。
标签: java android listview android-adapter custom-adapter