java - 如何在单行android中显示数据库中的多列值

标签 java android xml sqlite listview

这是我的代码:

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
   //populateListView();
    mydb = new DBHelper(this);
    ArrayList<String> array_list = mydb.getAllCotacts();
    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, array_list);

    ListView obj = (ListView) findViewById(R.id.listView);
    obj.setAdapter(arrayAdapter);
    obj.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
            // TODO Auto-generated method stub
            int id_To_Search = arg2 + 1;

            Bundle dataBundle = new Bundle();
            dataBundle.putInt("id", id_To_Search);

            Intent intent = new Intent(getApplicationContext(), DisplayContact.class);

            intent.putExtras(dataBundle);
            startActivity(intent);
        }
    });


    b1=(Button)findViewById(R.id.button);
    b1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent i = new Intent(getApplicationContext(),DisplayContact.class);
            startActivity(i);
        }
    });

}

这是我的 getallcontact 代码......

          public ArrayList<String> getAllCotacts()
{
    ArrayList<String> array_list = new ArrayList<>();

    //hp = new HashMap();
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor res =  db.rawQuery( "select * from contacts", null );
    res.moveToFirst();

    while(!res.isAfterLast()){
        array_list.add(res.getString(res.getColumnIndex(CONTACTS_COLUMN_NAME)));
        array_list.add(res.getString(res.getColumnIndex(CONTACTS_COLUMN_EMAIL)));
        res.moveToNext();
    } 
    return array_list;
}

输出是.. output

如何在一行中同时显示姓名电子邮件

最佳答案

您将姓名电子邮件添加为单独的列表项 在您的列表中,因此它们合并为一个条目。

在 while 循环中执行此操作

 array_list.add(res.getString(res.getColumnIndex(CONTACTS_COLUMN_NAME)) +"  "+res.getString(res.getColumnIndex(CONTACTS_COLUMN_EMAIL)));

而不是这个

 array_list.add(res.getString(res.getColumnIndex(CONTACTS_COLUMN_NAME)));
 array_list.add(res.getString(res.getColumnIndex(CONTACTS_COLUMN_EMAIL)));

另外,为了获得更好的格式,您可以使用新行转义序列“\n”

 array_list.add(res.getString(res.getColumnIndex(CONTACTS_COLUMN_NAME)) +"\n"+res.getString(res.getColumnIndex(CONTACTS_COLUMN_EMAIL)));

关于java - 如何在单行android中显示数据库中的多列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39632253/

相关文章:

java - java中的静态 block 和静态变量

Javafx 生成形状数组列表

java - 使用 twitter4j 的问题

android - Firebase 实时数据库是否延迟向监听器发送值

android - 带有jenkins的android apk生成在设备上崩溃。在android studio中一切正常

c# - 使用c#将图像插入到xml文件中

java - 是否需要在每个操作系统上安装JVM才能运行java软件或java编译文件。?

android - 无法在单选组中显示按钮的值

Android Studio渲染异常: "mBaselineAlignedChildIndex of LinearLayout points to a View that doesn' t know how to get its baseline"

android - 选项卡之间的间距 TabPageIndicator