0

I'm working on that Problem since 6 hours and just can't fix it, anyone sees the mistake?

The revelant part of my MainActivity Code:

private void showAllListEntries() {

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

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

My Custom Array 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;
    }
}

In my listlayout.xml I just have three TextViews which I'm working with by using the Array Adapter.

The Run feed:

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: android.os.BinderProxy@f600c06 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) 

I would be very happy about a solution :D

RamenChef
  • 5,557
  • 11
  • 31
  • 43

1 Answers1

0

Try replacing your adapter to extend BaseAdapter instead of ArrayAdapter. You will need to implement a few more basic functions, but you have more control and won't hit the problem you are having.

Update: After having an extra look at your code and the stack trace, I am pretty sure that it is not this adapter that is throwing the exception. Are you using any other adapters? This line means that your adapter is not used (as it is not your getView() which is being called): android.widget.ArrayAdapter.getView(ArrayAdapter.java:369)

Doron Yakovlev Golani
  • 5,188
  • 9
  • 36
  • 60
  • Thanks for helping. The problem was that the system gave out the failure even if I deleted the adapter. I completley rewrote it the same way and now it works. – Prince1706z Oct 26 '16 at 08:33