Question

I'm new to Android so apologies if I've completely ballsed this up.

I've been playing with listview and baseadapter for the past week and cannot for the life of me get it to work.

The new error I'm getting back is:

 01-26 14:22:03.979: E/AndroidRuntime(3449): FATAL EXCEPTION: main
01-26 14:22:03.979: E/AndroidRuntime(3449): Process: com.example.coreoffice, PID: 3449
01-26 14:22:03.979: E/AndroidRuntime(3449): android.content.res.Resources$NotFoundException: String resource ID #0x1
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.content.res.Resources.getText(Resources.java:244)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.widget.TextView.setText(TextView.java:3888)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at com.example.coreoffice.HomeFragment$dataListAdapter.getView(HomeFragment.java:145)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.widget.AbsListView.obtainView(AbsListView.java:2263)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.widget.ListView.measureHeightOfChildren(ListView.java:1263)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.widget.ListView.onMeasure(ListView.java:1175)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.view.View.measure(View.java:16497)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:719)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:455)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.view.View.measure(View.java:16497)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.view.View.measure(View.java:16497)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.view.View.measure(View.java:16497)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:651)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.view.View.measure(View.java:16497)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.view.View.measure(View.java:16497)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:327)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.view.View.measure(View.java:16497)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2291)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.view.View.measure(View.java:16497)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1916)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1113)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1295)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5670)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.view.Choreographer.doCallbacks(Choreographer.java:574)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.view.Choreographer.doFrame(Choreographer.java:544)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.os.Handler.handleCallback(Handler.java:733)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.os.Handler.dispatchMessage(Handler.java:95)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.os.Looper.loop(Looper.java:136)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at android.app.ActivityThread.main(ActivityThread.java:5017)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at java.lang.reflect.Method.invokeNative(Native Method)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at java.lang.reflect.Method.invoke(Method.java:515)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
01-26 14:22:03.979: E/AndroidRuntime(3449):     at dalvik.system.NativeStart.main(Native Method)

This is the code:

package com.example.coreoffice;

import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class HomeFragment extends Fragment {

    private int jcount = 0;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        displayListView();
        TextView t = (TextView) getActivity().findViewById(R.id.header);
        t.setText("All Jobs (" + getCount() + ")");
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.list_jobs, container, false);

        return view;

    }

    private void displayListView() {

        // Array list of countries

        String[] Title = { "Slag Lane", "Slag lane 1", "Street1" };
        String[] Address = { "Road street", "Road Street 2", "Road street 3" };
        String[] Description = { "Description 1", "Description 2",
                "Description 3" };
        String[] PostCode = { "wa32ez", "m30oft", "wn24sx" };
        int[] JID = { 1, 2, 3 };

        setCount(JID.length);

        ListView listView = (ListView) getView().findViewById(R.id.listview);

        listView.setAdapter(new dataListAdapter(getActivity(), Title, Address,
                Description, PostCode, JID));

        // enables filtering for the contents of the given ListView
        // listView.setTextFilterEnabled(true);

        listView.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1,
                    int position, long arg3) {
                goToSecondFragment(position);
            }
        });

    }

    public int getCount() {
        return jcount;
    }

    public void setCount(int jcount) {
        this.jcount = jcount;
    }

    private void goToSecondFragment(int position) {
        Fragment fragment = new PagesFragmentContent();
        Bundle bundle = new Bundle();
        bundle.putInt("ID", position);
        fragment.setArguments(bundle);
        FragmentManager fragmentManager = getFragmentManager();
        fragmentManager.beginTransaction()
                .replace(R.id.frame_container, fragment, "frag2")
                .addToBackStack("frag2").commit();
    }

    class dataListAdapter extends BaseAdapter {
        String[] Title, Address, Description, PostCode;
        int[] JID;
        Context context;

        public dataListAdapter(Context context, String[] stTitle,
                String[] stAddress, String[] stDescription,
                String[] stPostCode, int[] inJID) {
            this.context = context;
            Title = stTitle;
            Address = stAddress;
            Description = stDescription;
            PostCode = stPostCode;
            JID = inJID;

        }

        public int getCount() {
            // TODO Auto-generated method stub
            return JID.length;
        }

        public Object getItem(int arg0) {
            // TODO Auto-generated method stub
            return null;
        }

        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return position;
        }

        @Override
        public View getView(int position, View view, ViewGroup viewGroup) {
            // TODO Auto-generated method stub
            LayoutInflater inflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View row = inflater.inflate(R.layout.list_jobs_row, null, false);

            TextView title = (TextView) row.findViewById(R.id.title);
            TextView address = (TextView) row.findViewById(R.id.address);
            TextView description = (TextView) row
                    .findViewById(R.id.description);
            TextView postcode = (TextView) row.findViewById(R.id.postcode);
            TextView jid = (TextView) row.findViewById(R.id.jid);

            title.setText(Title[position]);
            address.setText(Address[position]);
            description.setText(Description[position]);
            postcode.setText(PostCode[position]);
            jid.setText(JID[position]);

            return (row);
        }
    }

}

list_jobs_row.xml

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical" 
 android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  <TextView android:id="@+id/title"
  android:textSize="14sp" 
  android:textStyle="bold" 
  android:textColor="#FFFF00" 
  android:layout_width="wrap_content" 
  android:layout_height="wrap_content"
  android:text=""/>

 <TextView android:id="@+id/address" 
  android:layout_width="wrap_content" 
  android:layout_height="wrap_content"
  android:text=""/>

 <TextView android:id="@+id/description" 
  android:layout_width="wrap_content" 
  android:layout_height="wrap_content"
  android:text=""/>

  <TextView android:id="@+id/postcode" 
  android:layout_width="wrap_content" 
  android:layout_height="wrap_content"
  android:text=""/>

   <TextView android:id="@+id/jid" 
  android:layout_width="wrap_content" 
  android:layout_height="wrap_content"
  android:text=""/>
</LinearLayout>
Was it helpful?

Solution 2

do the following :

        public dataListAdapter(String[] stTitle, String[] stAddress,
                String[] stDescription, String[] stPostCode, int[] inJID , Context context)  {
         this.context=context; 
....
        }

and in your getView method do the following :

View row = inflater.inflate(R.layout.list_jobs_row, null,
                    false);

then do the following :

jid.setText(JID[position]+"");

Hope that helps .

OTHER TIPS

context is not initialized in your adapter.

you need to initialize your context as well,

public dataListAdapter(Context context, String[] stTitle, String[] stAddress,
                String[] stDescription, String[] stPostCode, int[] inJID) {
   // other stuff
   this.context = context;

}


new dataListAdapter(getActivity(), Title, Address, Description,PostCode, JID)

.

jid.setText(JID[position]);

you are giving resourceId in that way, you should make it string like

  jid.setText("" + JID[position]);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top