2013-08-29 106 views
-1

我正在開發一個自定義ListView的簡單待辦事項列表應用程序。我希望能夠改變顏色(例如白色文本,而不是文本視圖中的黑色),並且可能爲ListView中的每個項目添加複選框。無法自定義ListView

當使用默認列表視圖時,我需要使用layout.xml id'@android:id/list'來自定義視圖,我使用id'@ + id/task_list'。當我這樣做時,我收到錯誤:

"your content must have a listview whose id attribute is 'android.r.id.list'" 

我該怎麼辦?有鑑於此,我們將不勝感激

以下是我正在使用的代碼。

MainActivity.java

package com.example.todo; 

import java.util.ArrayList; 

import android.app.ListActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.EditText; 
import android.widget.TextView; 

public class MainActivity extends ListActivity { 

ArrayList<TextView> listItems=new ArrayList<TextView>(); 

ArrayAdapter<TextView> adapter; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    adapter=new ArrayAdapter<TextView>(this, 
     R.layout.task_row_item, 
     listItems); 
    setListAdapter(adapter); 
} 

public void addItems(View view) { 
    EditText newItem = (EditText) findViewById(R.id.textField); 
    TextView listItem = (TextView) findViewById(R.id.task_description); 
    listItems.add(listItem); 
    adapter.notifyDataSetChanged(); 
    newItem.setText(""); 
} 
} 

activity_main.xml中

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:background="@color/black" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context=".MainActivity" > 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > 

    <EditText 
     android:id="@+id/textField" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:ems="10" 
     android:hint="Enter a task..." 
     android:inputType="text" > 

     <requestFocus /> 
    </EditText> 

    <Button 
     android:id="@+id/addItems" 
     style="?android:attr/buttonStyleSmall" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:onClick="addItems" 
     android:text="Add" /> 

</LinearLayout> 

    <ListView 
    android:id="@+id/task_list" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

</LinearLayout> 

task_row_item.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:paddingTop="@dimen/activity_vertical_margin" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:orientation="horizontal" > 

<TextView 
    android:id="@+id/task_description" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_vertical" 
    android:layout_weight="1" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 

</LinearLayout> 

回答

1

要麼停止使用ListActivity或更換

<ListView 
android:id="@+id/task_list" 

<ListView 
android:id="@android:id/list" 

熟悉:http://developer.android.com/reference/android/app/ListActivity.html

+0

我試圖使用自定義列表視圖。 –

+0

什麼是「自定義列表視圖」?但無論如何,這並不重要。除非您使用ListActivity提供的特殊功能,否則列表視圖不需要ListActivity。如果您不使用,請改爲繼續常規活動。如果您使用這些功能,則需要更改列表的ID,如我在答案中所寫的以及鏈接的文檔所描述的那樣。我個人從來沒有使用ListActivity我自己 –

+0

當我使用一個活動,而不是一個ListActivity,它不讓我使用'setListAdapter(適配器);'。在這種情況下是否有其他選擇?我該如何解決這個問題?也感謝您的幫助,我欣賞它。 –

相關問題