Android listview özel satırlar

ListView için belirlediğim özel bir düzende sorun var. ListView öğelerine ekleyen bir düğmem var ve özel bir satır kullanıyor, ancak her eklemek için düğmeye basmaya çalıştığımda çöküyor. Bunu düzeltmek için bir çözüm öneren var mı? Ben android btw için oldukça yeniyim.

İşte kod:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListAdapter;
import android.widget.ListView;

import java.util.ArrayList;

public class ProjectCreateScreen extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.secondary_layout1);

    Button btn = (Button) findViewById(R.id.addBtn);

    final ArrayList listItems=new ArrayList();
    final ListAdapter addAdapter = new ArrayAdapter(this, R.layout.custom_row,
            listItems);
    ListView lv = (ListView) findViewById(R.id.lv);
    lv.setAdapter(addAdapter);

    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            listItems.add("New Project");
            ((ArrayAdapter) addAdapter).notifyDataSetChanged();
        }
    });
    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Intent switchToEdit = new Intent(ProjectCreateScreen.this, teamCreateScreen.class);
            startActivity(switchToEdit);
        }
    });
}

}

Bu aktivitenin kullandığı düzen:

<?xml version="1.0" encoding="utf-8"?>


<button
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:text="@string/AddProject"
    android:id="@+id/addBtn"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:onClick="StartProject"/>


    


Özel satır düzeni:

<?xml version="1.0" encoding="utf-8"?>





1
Tüm logcat mesajlarını alamayabilirsin, eğer kilitlenirse bir log izleme olması gerekir.
katma yazar zgc7009, kaynak
Tüm logcat mesajlarını alamayabilirsin, eğer kilitlenirse bir log izleme olması gerekir.
katma yazar zgc7009, kaynak
ArrayAdapter (this, R.layout.custom_row, listItems); ArrayAdapter (this, R.layout.custom_row, R.id.customRow, listItems) değiştirmeyi deneyin ); . Android kaynağındaki metnin kimliğini belirtmeniz gerektiğini düşünüyorum
katma yazar Rami, kaynak
ArrayAdapter (this, R.layout.custom_row, listItems); ArrayAdapter (this, R.layout.custom_row, R.id.customRow, listItems) değiştirmeyi deneyin ); . Android kaynağındaki metnin kimliğini belirtmeniz gerektiğini düşünüyorum
katma yazar Rami, kaynak
Logcat'i yayınla
katma yazar Rami, kaynak
@DanielNugent Teşekkürler ... Sorunun nedenini çözmenin kolay olmadığını itiraf etmeliyim ki ... +1 cevabını çözdün
katma yazar Rami, kaynak
@Rami Cevabımdaki son düzenlemeden önce yorumunuzu gönderdiğinizi farkettim. Güzel göz! Kodu çalıştırmakla meşguldüm ve yorumunuzu görmedim.
katma yazar Daniel Nugent, kaynak
@Rami Cevabımdaki son düzenlemeden önce yorumunuzu gönderdiğinizi farkettim. Güzel göz! Kodu çalıştırmakla meşguldüm ve yorumunuzu görmedim.
katma yazar Daniel Nugent, kaynak
evet, bu düzeltir, teşekkür ederim! :)
katma yazar Richard, kaynak
evet, bu düzeltir, teşekkür ederim! :)
katma yazar Richard, kaynak
bu sadece programın 'çalışmayı durdurdu' olduğunu söylüyor
katma yazar Richard, kaynak
bu sadece programın 'çalışmayı durdurdu' olduğunu söylüyor
katma yazar Richard, kaynak

6 cevap

Düzenleme: ArrayAdapter yapıcısına R.id.customRow vermeniz gerekir.

Bu düzeltmeli:

 final ListAdapter addAdapter = new ArrayAdapter(this, R.layout.custom_row, R.id.customRow,
                listItems);

Orijinal kodunuzla, ArrayList'e bazı veriler ekledim ve şu istisnayı aldım:

04-09 13:12:34.992  12418-12418/com.listviewtest.daniel.listviewtest E/ArrayAdapter﹕ You must supply a resource ID for a TextView
04-09 13:12:34.992  12418-12418/com.listviewtest.daniel.listviewtest D/AndroidRuntime﹕ Shutting down VM
04-09 13:12:34.992  12418-12418/com.listviewtest.daniel.listviewtest W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x41891da0)
04-09 13:12:35.012  12418-12418/com.listviewtest.daniel.listviewtest E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.listviewtest.daniel.listviewtest, PID: 12418
    java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView
2
katma
simple_list_item1 kullandığımda mükemmel çalıştı ancak custom_row'u eklediğimde artık bir şey yapmıyor
katma yazar Richard, kaynak
etkinlik, ikincil_adı1, listView custom_row'u kullanır
katma yazar Richard, kaynak
Yardımcı olmadı ve düzenler olması gereken sıraya göre, sadece o custom_row düzeni ve programı düzgün çalışmasını engelleyen kullandığım adaptör hakkında
katma yazar Richard, kaynak

Düzenleme: ArrayAdapter yapıcısına R.id.customRow vermeniz gerekir.

Bu düzeltmeli:

 final ListAdapter addAdapter = new ArrayAdapter(this, R.layout.custom_row, R.id.customRow,
                listItems);

Orijinal kodunuzla, ArrayList'e bazı veriler ekledim ve şu istisnayı aldım:

04-09 13:12:34.992  12418-12418/com.listviewtest.daniel.listviewtest E/ArrayAdapter﹕ You must supply a resource ID for a TextView
04-09 13:12:34.992  12418-12418/com.listviewtest.daniel.listviewtest D/AndroidRuntime﹕ Shutting down VM
04-09 13:12:34.992  12418-12418/com.listviewtest.daniel.listviewtest W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x41891da0)
04-09 13:12:35.012  12418-12418/com.listviewtest.daniel.listviewtest E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.listviewtest.daniel.listviewtest, PID: 12418
    java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView
2
katma
Yardımcı olmadı ve düzenler olması gereken sıraya göre, sadece o custom_row düzeni ve programı düzgün çalışmasını engelleyen kullandığım adaptör hakkında
katma yazar Richard, kaynak
simple_list_item1 kullandığımda mükemmel çalıştı ancak custom_row'u eklediğimde artık bir şey yapmıyor
katma yazar Richard, kaynak
etkinlik, ikincil_adı1, listView custom_row'u kullanır
katma yazar Richard, kaynak

Değişmeye çalış

ArrayAdapter(this, R.layout.custom_row, listItems);

için

ArrayAdapter(this, R.layout.custom_row, R.id.customRow, listItems);

Look at ArrayAdapter constructor params

0
katma

Değişmeye çalış

ArrayAdapter(this, R.layout.custom_row, listItems);

için

ArrayAdapter(this, R.layout.custom_row, R.id.customRow, listItems);

Look at ArrayAdapter constructor params

0
katma

Faaliyette StartProject adlı bir genel yöntem yoktur. Bu özelliği kaldır:

android:onClick="StartProject"

ve layout_below düzeltmek:

android:layout_below="@id/addBtn"
0
katma
"+" yi layout_below'dan kaldır
katma yazar onof, kaynak
haklısın artık gerekli değil ama sorunu çözmedi: /
katma yazar Richard, kaynak
bunun neden düzeltilmesi gerekiyor? ListView düğmenin altında olması gerekiyordu
katma yazar Richard, kaynak
Bir kez daha, '+' işaretini kaldırmak hiçbir şeyi değiştirmez
katma yazar Richard, kaynak

Faaliyette StartProject adlı bir genel yöntem yoktur. Bu özelliği kaldır:

android:onClick="StartProject"

ve layout_below düzeltmek:

android:layout_below="@id/addBtn"
0
katma
"+" yi layout_below'dan kaldır
katma yazar onof, kaynak
bunun neden düzeltilmesi gerekiyor? ListView düğmenin altında olması gerekiyordu
katma yazar Richard, kaynak
haklısın artık gerekli değil ama sorunu çözmedi: /
katma yazar Richard, kaynak
Bir kez daha, '+' işaretini kaldırmak hiçbir şeyi değiştirmez
katma yazar Richard, kaynak