2016-10-25 3 views
0

Я работаю над этой проблемой с 6 часов и просто не могу ее исправить, кто-нибудь видит ошибку?Пользовательский массив ArrayAdapter не работает. Что бы я ни попробовал, он запрашивает идентификатор ресурса для TextView

revelant часть моего MainActivity Код:

private void showAllListEntries() { 

    ArrayAdapter<Schulden> adapter = new schuldenArrayAdapter(this, 0, schuldenList); 

    ListView schuldenListView = (ListView) findViewById(R.id.schuldenListView); 
    schuldenListView.setAdapter(adapter); 
} 

Мой заказ массив адаптер:

public class schuldenArrayAdapter extends ArrayAdapter<Schulden> { 

    Context context; 
    private ArrayList<Schulden> schuldenList; 

    public schuldenArrayAdapter(Context context, int resource, ArrayList<Schulden> schuldens) { 

     super(context, resource, schuldens); 

     this.context = context; 
     this.schuldenList = schuldens; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     Schulden schulden = schuldenList.get(position); 

     LayoutInflater inflater = (LayoutInflater) context.getSystemService(MainActivity.LAYOUT_INFLATER_SERVICE); 
     View view = inflater.inflate(R.layout.listlayout, null); 

     TextView betragView = (TextView) view.findViewById(R.id.betragtextview); 
     TextView nameView = (TextView) view.findViewById(R.id.nametextview); 
     TextView datumView = (TextView) view.findViewById(R.id.datumtextview); 

     String completeBetrag = schulden.getBetrag() + "€"; 
     betragView.setText(completeBetrag); 

     nameView.setText(schulden.getName()); 

     SimpleDateFormat datenbankdatumformat = new SimpleDateFormat("yyyy-MM-dd"); 
     SimpleDateFormat ausgabedatumformat = new SimpleDateFormat("dd.MM.yyyy"); 

     Date datumdatenbankformat = datenbankdatumformat.parse(schulden.getDatum(), null); 
     String datumausgabedatumformat = ausgabedatumformat.format(datumdatenbankformat); 

     datumView.setText(datumausgabedatumformat); 

     return view; 
    } 
} 

В моей listlayout.xml я только три TextViews, которые я работаю с, используя Адаптер массива.

Подачу Run:

D/ViewRootImpl: MSG_RESIZED_REPORT: ci=Rect(0, 84 - 0, 0) vi=Rect(0, 84 - 0, 0) or=1 
I/Timeline: Timeline: Activity_idle id: [email protected] time:209490510 
E/ArrayAdapter: You must supply a resource ID for a TextView 
D/AndroidRuntime: Shutting down VM 
E/AndroidRuntime: FATAL EXCEPTION: main 
       Process: com.example.benedikt.schuldenliste, PID: 23044 
       java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView 
        at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:393) 
        at android.widget.ArrayAdapter.getView(ArrayAdapter.java:369) 
        at android.widget.AbsListView.obtainView(AbsListView.java:3073) 
        at android.widget.ListView.measureHeightOfChildren(ListView.java:1305) 
        at android.widget.ListView.onMeasure(ListView.java:1212) 
        at android.view.View.measure(View.java:20236) 
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6333) 
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) 
        at android.view.View.measure(View.java:20236) 
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6333) 
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) 
        at android.support.v7.internal.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135) 
        at android.view.View.measure(View.java:20236) 
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6333) 
        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464) 
        at android.widget.LinearLayout.measureVertical(LinearLayout.java:747) 
        at android.widget.LinearLayout.onMeasure(LinearLayout.java:629) 
        at android.view.View.measure(View.java:20236) 
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6333) 
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) 
        at android.view.View.measure(View.java:20236) 
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6333) 
        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464) 
        at android.widget.LinearLayout.measureVertical(LinearLayout.java:747) 
        at android.widget.LinearLayout.onMeasure(LinearLayout.java:629) 
        at android.view.View.measure(View.java:20236) 
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6333) 
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) 
        at com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:3140) 
        at android.view.View.measure(View.java:20236) 
        at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2704) 
        at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1656) 
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1948) 
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1544) 
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7601) 
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911) 
        at android.view.Choreographer.doCallbacks(Choreographer.java:686) 
        at android.view.Choreographer.doFrame(Choreographer.java:622) 
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897) 
        at android.os.Handler.handleCallback(Handler.java:739) 
        at android.os.Handler.dispatchMessage(Handler.java:95) 
        at android.os.Looper.loop(Looper.java:148) 
        at android.app.ActivityThread.main(ActivityThread.java:7331) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
       Caused by: java.lang.ClassCastException: android.widget.TwoLineListItem cannot be cast to android.widget.TextView 
        at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:386) 
        at android.widget.ArrayAdapter.getView(ArrayAdapter.java:369)  
        at android.widget.AbsListView.obtainView(AbsListView.java:3073)  
        at android.widget.ListView.measureHeightOfChildren(ListView.java:1305)  
        at android.widget.ListView.onMeasure(ListView.java:1212)  
        at android.view.View.measure(View.java:20236)  
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6333)  
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)  
        at android.view.View.measure(View.java:20236)  
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6333)  
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)  
        at android.support.v7.internal.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135)  
        at android.view.View.measure(View.java:20236)  
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6333)  
        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)  
        at android.widget.LinearLayout.measureVertical(LinearLayout.java:747)  
        at android.widget.LinearLayout.onMeasure(LinearLayout.java:629)  
        at android.view.View.measure(View.java:20236)  
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6333)  
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)  
        at android.view.View.measure(View.java:20236)  
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6333)  
        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)  
        at android.widget.LinearLayout.measureVertical(LinearLayout.java:747)  
        at android.widget.LinearLayout.onMeasure(LinearLayout.java:629)  
        at android.view.View.measure(View.java:20236)  
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6333)  
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)  
        at com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:3140)  
        at android.view.View.measure(View.java:20236)  
        at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2704)  
        at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1656)  
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1948)  
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1544)  
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7601)  
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)  
        at android.view.Choreographer.doCallbacks(Choreographer.java:686)  
        at android.view.Choreographer.doFrame(Choreographer.java:622)  
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)  
        at android.os.Handler.handleCallback(Handler.java:739)  
        at android.os.Handler.dispatchMessage(Handler.java:95)  
        at android.os.Looper.loop(Looper.java:148)  
        at android.app.ActivityThread.main(ActivityThread.java:7331)  
        at java.lang.reflect.Method.invoke(Native Method)  
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)  
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)  

Я был бы очень рад о решении: D

+1

BTW, классы Java всегда должны начать с большой буквы. –

+0

'context.getSystemService (MainActivity.LAYOUT_INFLATER_SERVICE)' почему вы ссылаетесь на «MainActivity» здесь? Или это просто опечатка? – fluffyBatman

+0

возможно, вы можете перейти по этой ссылке http://stackoverflow.com/a/9282069/4056935 – Sodiq

ответ

0

Попробуйте заменить адаптер продлить BaseAdapter вместо ArrayAdapter. Вам нужно будет реализовать еще несколько базовых функций, но у вас будет больше контроля и вы не столкнетесь с проблемой, с которой вы сталкиваетесь.

Обновление: После дополнительного просмотра кода и трассировки стека, я уверен, что этот адаптер не выбрасывает исключение. Используете ли вы какие-либо другие адаптеры? Эта линия означает, что адаптер не используется (как это не ваш GetView(), который вызывается): android.widget.ArrayAdapter.getView (ArrayAdapter.java:369)

+0

Спасибо за помощь. Проблема заключалась в том, что система выдала отказ, даже если я удалил адаптер. Я полностью переписал его таким же образом, и теперь он работает. – Prince1706z