StringBuilder 和 ArrayAdapter 出错
Error with StringBuilder and ArrayAdapter
我在尝试将 StringBuilder 传递到 ArrayAdapter 以使其显示在 ListView 中时遇到问题。我在编译时收到 cannot resolve constructor error,我确定它与 StringBuilder 有关。 Java 不是我的母语,所以非常感谢任何解释和答案。
这是我的代码
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> list = activityManager.getRunningAppProcesses();
StringBuilder info = new StringBuilder();
for (int i = 0; i < list.size(); i++) {
info.append(list.get(i).processName + "\n");
}
ArrayAdapter<StringBuilder> adapter = new ArrayAdapter<StringBuilder>(this,android.R.layout.simple_list_item_1, info);
ListView listView = (ListView) findViewById(R.id.listView1);
listView.setAdapter(adapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
}
没有 ArrayAdapter
的构造函数以 StringBuilder 作为参数。使用 ArrayList
ArrayList<String> info = new ArrayList<>();
for (ActivityManager.RunningAppProcessInfo p : list) {
info.add(p.processName);
}
应该做。
编辑:
你也应该使用
ArrayAdapter<String>
而不是 ArrayAdapter<StringBuilder>
我在尝试将 StringBuilder 传递到 ArrayAdapter 以使其显示在 ListView 中时遇到问题。我在编译时收到 cannot resolve constructor error,我确定它与 StringBuilder 有关。 Java 不是我的母语,所以非常感谢任何解释和答案。
这是我的代码
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> list = activityManager.getRunningAppProcesses();
StringBuilder info = new StringBuilder();
for (int i = 0; i < list.size(); i++) {
info.append(list.get(i).processName + "\n");
}
ArrayAdapter<StringBuilder> adapter = new ArrayAdapter<StringBuilder>(this,android.R.layout.simple_list_item_1, info);
ListView listView = (ListView) findViewById(R.id.listView1);
listView.setAdapter(adapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
}
没有 ArrayAdapter
的构造函数以 StringBuilder 作为参数。使用 ArrayList
ArrayList<String> info = new ArrayList<>();
for (ActivityManager.RunningAppProcessInfo p : list) {
info.add(p.processName);
}
应该做。
编辑:
你也应该使用
ArrayAdapter<String>
而不是 ArrayAdapter<StringBuilder>