Android HashMap不返回对象的名称
我想显示从数据库到listView的所有任务名称,但它只显示它们的对象id或名称或w。像这样 com.zcutuhacek.tasker。Task@41a826d0 com.zcutuhacek.tasker。Task@41a465d4 ... 我调用函数,它返回我的对象任务列表Android HashMap不返回对象的名称,android,list,object,hashmap,android-arrayadapter,Android,List,Object,Hashmap,Android Arrayadapter,我想显示从数据库到listView的所有任务名称,但它只显示它们的对象id或名称或w。像这样 com.zcutuhacek.tasker。Task@41a826d0 com.zcutuhacek.tasker。Task@41a465d4 ... 我调用函数,它返回我的对象任务列表 public class ListActivity extends Activity { protected void onCreate(Bundle savedInstanceState) {
public class ListActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
DatabaseTaskHandler db = new DatabaseTaskHandler(ListActivity.this);
List<Task> list = db.getAllTasks();
ListView listview = (ListView) findViewById(R.id.listView1);
final StableArrayAdapter adapter = new StableArrayAdapter(this,
android.R.layout.simple_list_item_1, list);
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.list, menu);
return true;
}
private class StableArrayAdapter extends ArrayAdapter<Task> {
HashMap<String, Integer> mIdMap = new HashMap<String, Integer>();
public StableArrayAdapter(Context context, int textViewResourceId,
List<Task> list) {
super(context, textViewResourceId, list);
for (int i = 0; i < list.size(); ++i) {
mIdMap.put(list.get(i), i);
}
}
}
}
当我写日志记录我把什么放到HashMap中时,它成功地显示了出来。我试过用或不用。toString,但都和我一开始写的一样
这是一种返回任务列表的方法:
public List<Task> getAllTasks() {
List<Task> taskList = new ArrayList<Task>();
String selectQuery = "SELECT * FROM " + TABLE_TASKS;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
Task task = new Task();
task.setId(Integer.parseInt(cursor.getString(0)));
task.set_name(cursor.getString(1));
// Adding contact to list
taskList.add(task);
} while (cursor.moveToNext());
}
return taskList;
}
请问我做错了什么?谢谢您需要重写适配器的getView方法并实现ViewHolder模式来处理任务对象的显示。实现任务类的toString。这将是地址或内部名称,发布关于任务名称数据库存储和RegardingYou Post任务类和db.getAllTasks方法检索的代码。@AmulyaKhare我已经添加了它,但我认为它不是problem@PankajKumar在我实现它之后,是否仍然需要覆盖适配器的getView?谢谢
public List<Task> getAllTasks() {
List<Task> taskList = new ArrayList<Task>();
String selectQuery = "SELECT * FROM " + TABLE_TASKS;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
Task task = new Task();
task.setId(Integer.parseInt(cursor.getString(0)));
task.set_name(cursor.getString(1));
// Adding contact to list
taskList.add(task);
} while (cursor.moveToNext());
}
return taskList;
}