【问题标题】:Android HashMap not returning object's nameAndroid HashMap 不返回对象的名称
【发布时间】:2013-12-17 22:48:30
【问题描述】:

我想显示从数据库到 listView 的所有任务名称,但它只显示它们的对象 id(或名称或 w。)像这样

com.zcutuhacek.tasker.Task@41a826d0
com.zcutuhacek.tasker.Task@41a465d4
...

我调用函数,它返回我的对象​​(任务)列表

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 更改为 HashMap&lt;Task, Integer&gt;,当我将其放入 HashMap 时,我也尝试使用我的对象和对象名称的 getter:

list.get(i).get_name()
list.get(i)._name  

当我写信记录我要放入 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;
}

请问我做错了什么?谢谢

【问题讨论】:

  • Task类的toString实现
  • 那将是地址或内部名称,发布有关任务名称的数据库存储和相关检索的代码
  • 你能发布Task类和db.getAllTasks()方法吗?
  • @AmulyaKhare 我已经添加了,但我认为这不是问题
  • @PankajKumar 在我实现它之后,是否还需要覆盖适配器的getView?谢谢

标签: android list object hashmap android-arrayadapter


【解决方案1】:

您需要覆盖适配器的getView 方法并实现ViewHolder 模式来处理显示您的Task 对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    • 1970-01-01
    相关资源
    最近更新 更多