Ошибка в макете для отображения списка - PullRequest
1 голос
/ 03 марта 2012

Я хочу использовать представление списка, и я создал свой собственный макет для отображения данных в представлении списка. Вот мой код:

public class ListActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ListView listView = (ListView) findViewById(R.id.mylist);
        String[] values = new String[] { "Android", "iPhone", "WindowsMobile",
            "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
            "Linux", "OS/2" };

        // First paramenter - Context
        // Second parameter - Layout for the row
        // Third parameter - ID of the View to which the data is written
        // Forth - the Array of data
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
//#1            android.R.layout.list_item, android.R.id.text1, values);  

// list_item - это созданный мной макет, который содержит текстовое представление и размер

        // Assign adapter to ListView
        listView.setAdapter(adapter);
    }
}

Но в строке # 1 я получаю сообщение об ошибке

list_item connot be resolved or is not a field

Я также создал файл list_item.xml, как показано ниже.

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:padding="10dp"
    android:textSize="16sp">


</TextView>

Куда я иду не так?
Получил ответ от @ByteMe. Теперь нет ошибки. Но я получаю следующую ошибку во время выполнения. Я скопировал содержимое logcat, и вот что я получаю:

E/AndroidRuntime(  384): Uncaught handler: thread main exiting due to uncaught e
xception
E/AndroidRuntime(  384): java.lang.NullPointerException
E/AndroidRuntime(  384):        at android.widget.ArrayAdapter.createViewFromRes
ource(ArrayAdapter.java:353)
E/AndroidRuntime(  384):        at android.widget.ArrayAdapter.getView(ArrayAdap
ter.java:323)
E/AndroidRuntime(  384):        at android.widget.AbsListView.obtainView(AbsList
View.java:1274)
E/AndroidRuntime(  384):        at android.widget.ListView.measureHeightOfChildr
en(ListView.java:1147)
E/AndroidRuntime(  384):        at android.widget.ListView.onMeasure(ListView.ja
va:1060)
E/AndroidRuntime(  384):        at android.view.View.measure(View.java:7964)
E/AndroidRuntime(  384):        at android.view.ViewGroup.measureChildWithMargin
s(ViewGroup.java:3023)
E/AndroidRuntime(  384):        at android.widget.LinearLayout.measureChildBefor
eLayout(LinearLayout.java:888)
E/AndroidRuntime(  384):        at android.widget.LinearLayout.measureVertical(L
inearLayout.java:350)
E/AndroidRuntime(  384):        at android.widget.LinearLayout.onMeasure(LinearL
ayout.java:278)
E/AndroidRuntime(  384):        at android.view.View.measure(View.java:7964)
E/AndroidRuntime(  384):        at android.view.ViewGroup.measureChildWithMargin
s(ViewGroup.java:3023)
E/AndroidRuntime(  384):        at android.widget.FrameLayout.onMeasure(FrameLay
out.java:245)
E/AndroidRuntime(  384):        at android.view.View.measure(View.java:7964)
E/AndroidRuntime(  384):        at android.widget.LinearLayout.measureVertical(L
inearLayout.java:464)
E/AndroidRuntime(  384):        at android.widget.LinearLayout.onMeasure(LinearL
ayout.java:278)
E/AndroidRuntime(  384):        at android.view.View.measure(View.java:7964)
E/AndroidRuntime(  384):        at android.view.ViewGroup.measureChildWithMargin
s(ViewGroup.java:3023)
E/AndroidRuntime(  384):        at android.widget.FrameLayout.onMeasure(FrameLay
out.java:245)
E/AndroidRuntime(  384):        at android.view.View.measure(View.java:7964)
E/AndroidRuntime(  384):        at android.view.ViewRoot.performTraversals(ViewR
oot.java:763)
E/AndroidRuntime(  384):        at android.view.ViewRoot.handleMessage(ViewRoot.
java:1633)
E/AndroidRuntime(  384):        at android.os.Handler.dispatchMessage(Handler.ja
va:99)
E/AndroidRuntime(  384):        at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(  384):        at android.app.ActivityThread.main(ActivityThrea
d.java:4363)
E/AndroidRuntime(  384):        at java.lang.reflect.Method.invokeNative(Native
Method)
E/AndroidRuntime(  384):        at java.lang.reflect.Method.invoke(Method.java:5
21)
E/AndroidRuntime(  384):        at com.android.internal.os.ZygoteInit$MethodAndA
rgsCaller.run(ZygoteInit.java:860)
E/AndroidRuntime(  384):        at com.android.internal.os.ZygoteInit.main(Zygot
eInit.java:618)
E/AndroidRuntime(  384):        at dalvik.system.NativeStart.main(Native Method)

I/Process (   59): Sending signal. PID: 384 SIG: 3
I/dalvikvm(  384): threadid=7: reacting to signal 3
I/dalvikvm(  384): Wrote stack trace to '/data/anr/traces.txt'

В чем проблема сейчас?

Ответы [ 2 ]

3 голосов
/ 03 марта 2012

попробуйте использовать

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
    R.layout.list_item, R.id.text1, values);

вместо

android.R.layout.list_item

, который, кажется, исправил это для меня

0 голосов
/ 03 марта 2012

Поскольку никто не отвечает на вторую часть вопроса (@ByteMe ответил на первую часть вопроса), я сам отвечу на вопрос (получил ответ после прохождения основ представления списка). Anser довольно прост.
Просто удалите необязательный параметр (третий параметр) из конструктора адаптера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...