Reputation: 13
I am having a problem trying to pass a StringBuilder into an ArrayAdapter so that it will display in a ListView. I'm getting a cannot resolve constructor error when compiling and I'm sure it has something to do with the StringBuilder. Java is not my first language so any explanation with the answers is a greatly appreciated.
Here is my code
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;
}
}
Upvotes: 0
Views: 315
Reputation: 157437
there is not ArrayAdapter
's constructor that takes a StringBuilder as parameter. Use an ArrayList
ArrayList<String> info = new ArrayList<>();
for (ActivityManager.RunningAppProcessInfo p : list) {
info.add(p.processName);
}
Should do it.
Edit:
you should also be using
ArrayAdapter<String>
instead of ArrayAdapter<StringBuilder>
Upvotes: 3