添加一组按钮到ListView,然后设置适配器和设置按钮文本
Adding a set of buttons to ListView and then setting adapter and setting button texts
大家好,我很难弄清楚为什么我的按钮无法显示正确的文本并显示垃圾代码。我是 运行 一个 serverRequest,然后在获取详细信息后创建按钮,我确实进行了测试,我从服务器返回了正确的字符串。
public void getCourses(User user) {
ServerRequest serverRequest = new ServerRequest(this);
serverRequest.fetchUserCoursesDataInBackground(user, new getUserCallback() {
@Override
public void doneString(String[] returnedString) {
if (returnedString == null) {
System.out.println("DONE EMPTY");
} else {
userLocalStore.storeUserCourses(returnedString);
final ListView listView = (ListView) findViewById(R.id.viewCourseList);
final ArrayList<Button> list = new ArrayList<>();
View v = getWindow().getDecorView();
for (int i = 0; i < returnedString.length; i++) {
System.out.println("This is in for loop:" +returnedString[i]);
Button button = new Button(v.getContext());
button.setText(returnedString[i]);
button.setId(i);
button.setHeight(40);
button.setWidth(100);
list.add(button);
}
if (list.isEmpty()) {
System.out.println("List is empty bro");
} else {
final ArrayAdapter adapter = new ArrayAdapter(v.getContext(), android.R.layout.simple_list_item_1, list);
listView.setAdapter(adapter);
System.out.println("Adding adapter");
}
}
}
这是完整的代码。我将向您展示它在应用程序上显示的内容
我发现这段代码有 3 个问题:
1st 我假设 java 可以搞砸这 1:
replace> final ArrayList list = new ArrayList<>();
with> final ArrayList list = new ArrayList();
2nd 您正在为 ArrayAdapter 使用布局 "android.R.layout.simple_list_item_1",这是一个包含文本视图的 xml 布局,因此您的屏幕截图显示了 2 个文本视图而不是按钮。
第三个新的 ArrayAdapter() 构造函数采用字符串列表。所以如果你...
replace> final ArrayAdapter 适配器 = new ArrayAdapter(v.getContext(), android.R.layout.simple_list_item_1, list);
with> final ArrayAdapter adapter = new ArrayAdapter(v.getContext(), android.R.layout.simple_list_item_1, returnedString);
您将在循环中看到带有您正在打印的文本的按钮。
大家好,我很难弄清楚为什么我的按钮无法显示正确的文本并显示垃圾代码。我是 运行 一个 serverRequest,然后在获取详细信息后创建按钮,我确实进行了测试,我从服务器返回了正确的字符串。
public void getCourses(User user) {
ServerRequest serverRequest = new ServerRequest(this);
serverRequest.fetchUserCoursesDataInBackground(user, new getUserCallback() {
@Override
public void doneString(String[] returnedString) {
if (returnedString == null) {
System.out.println("DONE EMPTY");
} else {
userLocalStore.storeUserCourses(returnedString);
final ListView listView = (ListView) findViewById(R.id.viewCourseList);
final ArrayList<Button> list = new ArrayList<>();
View v = getWindow().getDecorView();
for (int i = 0; i < returnedString.length; i++) {
System.out.println("This is in for loop:" +returnedString[i]);
Button button = new Button(v.getContext());
button.setText(returnedString[i]);
button.setId(i);
button.setHeight(40);
button.setWidth(100);
list.add(button);
}
if (list.isEmpty()) {
System.out.println("List is empty bro");
} else {
final ArrayAdapter adapter = new ArrayAdapter(v.getContext(), android.R.layout.simple_list_item_1, list);
listView.setAdapter(adapter);
System.out.println("Adding adapter");
}
}
}
这是完整的代码。我将向您展示它在应用程序上显示的内容
我发现这段代码有 3 个问题:
1st 我假设 java 可以搞砸这 1:
replace> final ArrayList list = new ArrayList<>();
with> final ArrayList list = new ArrayList();
2nd 您正在为 ArrayAdapter 使用布局 "android.R.layout.simple_list_item_1",这是一个包含文本视图的 xml 布局,因此您的屏幕截图显示了 2 个文本视图而不是按钮。
第三个新的 ArrayAdapter() 构造函数采用字符串列表。所以如果你...
replace> final ArrayAdapter 适配器 = new ArrayAdapter(v.getContext(), android.R.layout.simple_list_item_1, list);
with> final ArrayAdapter adapter = new ArrayAdapter(v.getContext(), android.R.layout.simple_list_item_1, returnedString);
您将在循环中看到带有您正在打印的文本的按钮。