TextView是ListView未正确显示

时间:2013-05-08 06:08:11

标签: android android-listview textview

我有一个应用程序从数据库中获取字符串并将其放在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但我没有足够的重复:

enter image description here

4 个答案:

答案 0 :(得分:1)

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

试试,这个..

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

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

然后在loop..like

中添加temporay而不是textView
 adapter.add(temporay);

这一定会解决你的问题。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

检查下面给出的例子,这就是我如何做到这一点:

首先获取要显示的数据并将其存储在ArrayList中。此处al_rec_idal_rec_name分别是IntegerString类型的arraylists。

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>

多数民众赞成。你完成了...... !!!

答案 3 :(得分:0)

创建一个类自定义适配器,它将扩展您的ArrayList适配器,您可以膨胀包含textview的不同xml,也可以在自定义适配器的getView方法中创建动态textview。如果你需要一个例子,请告诉我。