2015-04-09 3 views
1

У меня проблема с настраиваемым макетом, который я установил для своего списка. У меня есть кнопка, которая добавляет элементы в listView и использует пользовательскую строку, но каждый раз, когда я пытаюсь нажать кнопку, чтобы добавить ее сбой. Может ли кто-нибудь предложить решение о том, как это исправить? Я довольно новичок в android btw.Android listview пользовательские строки

Вот код:

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<String> listItems=new ArrayList<String>(); 
    final ListAdapter addAdapter = new ArrayAdapter<String>(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); 
     } 
    }); 
} 

}

Раскладка эта деятельность использует:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:id="@+id/rl"> 

<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"/> 

<ListView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/addBtn" 
    android:id="@+id/lv"> 
    </ListView> 

</RelativeLayout> 

Обычай строки раскладка:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical"> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="80dp" 
    android:id="@+id/customRow"/> 

</LinearLayout> 
+1

Сообщение Logcat – Rami

+0

это просто говорит о том, что программа «не перестал работать», ничего на LogCat – Richard

+0

Вы не можете получать все ваши LogCat сообщения, если он выходит из строя должен быть журнал трассировки. – zgc7009

ответ

2

Edit: Вам нужно предоставить R.id.customRow - ArrayAdapter конструктор.

Это должно исправить:

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

с исходным кодом, я добавил некоторые данные в ArrayList, и получил это исключение:

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 
+0

Это не помогло, и макеты в порядке, они «Предполагалось, что это просто что-то в этом макете custom_row и адаптере, который я использую, чтобы поддерживать работоспособность программы. – Richard

+0

активность использует secondary_layout1, listView использует custom_row – Richard

+0

, он отлично работал, когда я использовал simple_list_item1, но когда я добавлено custom_row, это уже не делает это вещь – Richard

0

Там нет общественного метода под названием StartProject в Мероприятия. Удалите этот атрибут:

android:onClick="StartProject" 

и исправить layout_below:

android:layout_below="@id/addBtn" 
+0

вы правы, она больше не нужна, но проблема не устранена:/ – Richard

+0

удалите «+» из layout_below – onof

+0

, почему это нужно для исправления?Список ListView должен быть ниже кнопки – Richard

0

Попробуйте изменить

ArrayAdapter<String>(this, R.layout.custom_row, listItems);

в

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

Посмотрите на ArrayAdapter constructor params

Смежные вопросы