【问题标题】:Android Show database entries in listviewAndroid 在列表视图中显示数据库条目
【发布时间】:2013-08-23 07:07:08
【问题描述】:

我进行了搜索,但无法弄清楚为什么我的代码无法正常工作。我想从我的数据库中显示一行,并在列表视图中显示该行的所有记录。该代码有效,但是它仅返回一个列表视图值,而不是数据库内行中的所有记录。这是我更新的代码:

db = openOrCreateDatabase ("Names", MODE_PRIVATE, null); 

    String query = "SELECT * from players";
    Cursor c = db.rawQuery(query, null);
    int count = c.getCount();
    c.moveToFirst();

    ListView layout=(ListView)findViewById(R.id.listView1);  

    for (Integer j = 0; j < count; j++){ 


        String lister = c.getString(c.getColumnIndex("names_of"));

        String[] items = {lister};
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items);
        layout.setAdapter(adapter);
    c.moveToNext();

    }

    db.close();


}

数组工作不正常,我如何获得比第一个值更多的值?提前谢谢大家

【问题讨论】:

  • 我认为 textview 不再使用了。那为什么要循环创建textview?
  • 你是对的!感谢您清理我的代码!

标签: java android arrays listview


【解决方案1】:

使用这个,您应该将所有值存储在字符串数组中并将适配器线移出循环

for (Integer j = 0; j < count; j++){ 
String[j] items = lister;
}

 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items);
  layout.setAdapter(adapter);

【讨论】:

    【解决方案2】:

    试试这个代码。

    try to use this:
    
    db = openOrCreateDatabase ("Names", MODE_PRIVATE, null); 
    
    String query = "SELECT * from players";
    Cursor c = db.rawQuery(query, null);
    int count = 0;
    String[] items=new String[c.getCount()]; 
    
    if (c.moveToFirst()) {
    
      do {
                TextView txt = new TextView(getApplicationContext());
                txt.setText(c.getString(c.getColumnIndex("names_of")));
                txt.setPadding(20, 20, 20, 20);
                txt.setTextSize(20.0f);
                txt.setTextColor(Color.MAGENTA);
                String lister = c.getString(c.getColumnIndex("names_of"));
                items[count] = lister;
                count++;
    
    
         } while (c.moveToNext());
    
       }
      c.close();
     }
      db.close();     
    

    如果items 不为空,则设置适配器之后

      if(items.length>0){
          ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items);
          layout.setAdapter(adapter);
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-15
      • 2019-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多