3

我有一个从数据库中获取字符串并将其放入 ListView 的应用程序。这是从数据库中获取我的字符串的代码:

    public void setLogView(String date){


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

    DataBaseMain dataBase = new DataBaseMain(this);
    dataBase.open();
    String[][] all = dataBase.dayLog(date);
    dataBase.close();

    if(all == null)
        return;

String temporay = "";

    for(int j = 0; j < all[0].length; j++){
            temporay = "";  
        for (int i = 0; i < all.length; i++){
            TextView text = new TextView(this);
            temporay = temporay + " " + all[i][j];
            text.setText(temporay);
            adapter.add((TextView)text);
            }
        }   
}

似乎我在我的 ListView 中得到了新的 TextView,但文本搞砸了。我检查了我的temporay字符串并且很好。在某个地方把他放在 ListView 中。logcat 中没有错误或异常。这是我在我的应用程序 ListView 中得到的我想要的文本。(我想放 picutrue 但我没有足够的重复:

在此处输入图像描述

4

4 回答 4

1

在那里,从您提供的图像中可以清楚地看到

试试这个..

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

您的适配器附加 textView 对象而不是您提供的 String。

然后在循环中添加 temporay 而不是 textView ..like

 adapter.add(temporay);

这肯定会解决你的问题。

于 2013-05-08T10:08:06.040 回答
0

将您的适配器更改为ArrayAdapter<String>, 并添加temporay而不是整个列表视图。

否则,您可以扩展 ArrayAdapter 并覆盖getView()

于 2013-05-08T06:13:02.543 回答
0

假设您正在尝试使用单独的 layout.xml 在自定义列表视图中显示文本,其中仅包含 textview。

检查下面给出的示例,这就是我实现此目的的方法:

首先获取要显示的数据并将其存储在 ArrayList 中。这里, al_rec_id,分别是和al_rec_name类型的数组列表。IntegerString

cursor = database.query("records_data", new String[]{"rec_id", "rec_name"}, "cat_id=?", new String[]{cat_id+""}, null, null, null);
            if(cursor.getCount() == 0)
                Toast.makeText(getBaseContext(), "No records found.", Toast.LENGTH_SHORT).show();
            else
            {
                while(cursor.moveToNext())
                {
                    al_rec_id.add(cursor.getInt(0));
                    al_rec_name.add(cursor.getString(1));
                }
                cursor.close();
            }

之后,将此 arraylist 与 ArrayAdapter 绑定,然后将此适配器设置为 listview,如下所示。这里,array_adapter_all_records 是一个 String 类型的 ArrayAdapter

array_adapter_all_records = new ArrayAdapter<String>(this, R.layout.single_row_home, R.id.textViewSingleRowHome, al_rec_name);
        listview_all_records.setAdapter(array_adapter_all_records);

这是我的 single_row_home.xml 代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="15dp"
    android:background="#ffffff" >

    <TextView
        android:id="@+id/textViewSingleRowHome"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        style="@style/listview_only_textview"
        android:text="TextView" />

</RelativeLayout>

就是这样。然后你就完成了……!!!

于 2013-05-08T06:50:00.400 回答
0

创建一个类自定义适配器,它将扩展您的 ArrayList 适配器,您可以膨胀包含您的 textview 的不同 xml,或者您可以像现在在自定义适配器的 getView 方法中那样创建动态文本视图。如果您需要一个示例,请告诉我。

于 2013-05-08T08:52:13.877 回答