1

I have created a custom listview in a fragment and connected it with another activity to display details for each item of the list when clicked. The activity is loading and displays the title, description and other information but the images that were in the list view are not displaying in the other activity. And the code for this fragment do not work for another fragment of my menu, like for example MonumentsFragment. So, how to pass those images? Here is some code, My ParksFragment:

public class ParksFragment extends Fragment {
    private ArrayList<Park> parks = new ArrayList<>();



    public ParksFragment() {
        // Required empty public constructor
    }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View rootView = inflater.inflate(layout.fragment_parks, container, false);

        parks.add(new Park("Artificial Lake of Tirana", "The Grand Park of Tirana, also known as the Tirana Park on the Artificial Lake or even the Park of Saint Procopius, is a 230 hectare public park situated on the southern part of Tirana.",
                "At the end of Rruga Sami Frasheri.", R.drawable.artificiallake, "Always open", "No closing day", 0));
        parks.add(new Park("Zoo park", "The only one of its kind in Albania, Tirana Zoo is concentrated in an area of \u200B\u200B7 hectares in the southern part of town, between the Grand Park and the Botanic Garden of Tirana . The zoo was established in 1966.",
                "Near Rruga Liqeni i Thate", R.drawable.zoopark, "Always open", "No closing day", 300));
        parks.add(new Park("Memorial park of the Cemetery of the Nation's Martyrs", "The National Martyrs Cemetery of Albania is the largest cemetery in Albania, located on a hill overlooking Tirana. The \"Mother Albania\" statue is located at the Cemetery.",
                "Near street Rruga Ligor Lubonja", R.drawable.memorialpark, "Always open", "No closing day", 0));
        parks.add(new Park("Kashar park", "The main core of Kashar’s Park, is the Reservoir of Purez- Kus. The reservoir and its surrounding territory are considered as one of the most picturesque and biologically unsoiled suburbs of Tirana.",
                "Kashar", R.drawable.kasharpark, "Always open", "No closing day", 0));
        parks.add(new Park("Vaqarr park", "The second park in Vaqarr, is a recreational area of 97 ha, that is more than useful to inhabitants in Tirana.",
                "Vaqarr", R.drawable.vaqarripark, "Always open", "No closing day", 0));
        parks.add(new Park("Farka Lake park", "To the East of the East of Tirana’s city center, Lake Farka is a local favorite for waterborne fun in Summer. Picnicking, jet and water skiing, swimming, boating, all the usual wet sports suspects.",
                "At Lake of Farka, near Rruga Pjeter Budi", R.drawable.farkapark, "Always open", "No closing day", 0));
        parks.add(new Park("Peza park", "Peza, a village approximately 20 minutes from the center of Tirana, is a popular place for locals to go for a coffee or lunch on the weekends to escape the city.",
                "Peze", R.drawable.pezapark, "Always open", "No closing day", 0));
        parks.add(new Park("Dajti Recreative park", "This park is one of the components of Dajti National Park, located 26 km east of Tirana and 50 km from \"Mother Teresa\" airport. This place is very frequented by tourists and is also known as the \"Natural Balcon of Tirana\" which offers recreation and accommodation facilities for tourists.",
                "Dajti mountain", R.drawable.dajtirecreative, "Always open", "No closing day", 0));
        parks.add(new Park("Dajti National park", "Dajti National Park is very important on local, national and regional level, for its biodiversity, landscape, recreational and cultural values. Among others it is considered as a live museum of the natural vertical structure of vegetation.",
                "Dajti mountain", R.drawable.dajtinational, "Always open", "No closing day", 0));
        parks.add(new Park("Botanic garden", "The Botanical Gardens of Tirana are scenic botanical gardens located in southern Tirana, Albania. It is the only botanical garden in Albania. Construction commenced in 1964, with the original site covering approximately 15 hectares.",
                "Near Zoo park", R.drawable.botanicpark, "Always open", "No closing day", 200));
        parks.add(new Park("Rinia park", "The park, 500 metres (1,600 ft) from the central square, was built in 1950[5] as part of a major urban development program which developed after World War II. It was initially a pleasant family park where inhabitants of Tirana could take their children.",
                "Near Bulevardi Deshmoret e Kombit and near Rruga Myslym Shyri", R.drawable.riniapark, "Always open", "No closing day", 0));

        ArrayAdapter<Park> adapter = new ParkArrayAdapter(getActivity(), 0, parks);


        ListView listView = (ListView) rootView.findViewById(R.id.customListView);
        listView.setAdapter(adapter);


        //add event listener so we can handle clicks

        AdapterView.OnItemClickListener adapterViewListener = new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Park par = parks.get(position);

                Intent intent = new Intent(getActivity(), DetailActivity.class);
                intent.putExtra("image", par.getPark_image());
                intent.putExtra("title", par.getPark_title());
                intent.putExtra("description", par.getPark_description());
                intent.putExtra("streetname", par.getPark_streetname());
                intent.putExtra("openinghours", par.getOpenclosehour());
                intent.putExtra("closingday", par.getClosedday());
                intent.putExtra("price", par.getPrice());
                startActivity(intent);
            }

        };
        listView.setOnItemClickListener(adapterViewListener);
        return rootView;
    }
}

My DetailActivity class:

public class DetailActivity extends AppCompatActivity  {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detail);
        ImageView imageView = (ImageView) findViewById(R.id.image);
        TextView titleTV = (TextView) findViewById(R.id.p_title);
        TextView streetnameTV = (TextView) findViewById(R.id.address);
        TextView descriptionTV = (TextView) findViewById(R.id.p_description);
        TextView openclosehourTV = (TextView) findViewById(R.id.openclose);
        TextView closingdayTV = (TextView) findViewById(R.id.closed);
        TextView priceTV = (TextView) findViewById(R.id.price);


        getIntent().getStringExtra("image");
        Integer imageID = this.getResources().getIdentifier("image", "drawable", this.getPackageName());
        getIntent().getStringExtra("title");
        getIntent().getStringExtra("streetname");
        getIntent().getStringExtra("openclosehour");
        getIntent().getStringExtra("closingday");
        getIntent().getIntExtra("price", 0);



        imageView.setImageResource(imageID);
        titleTV.setText(getIntent().getStringExtra("title"));
        descriptionTV.setText(getIntent().getStringExtra("description"));
        streetnameTV.setText(getIntent().getStringExtra("streetname"));
        openclosehourTV.setText(getIntent().getStringExtra("openclosehour"));
        closingdayTV.setText(getIntent().getStringExtra("closingday"));
        priceTV.setText("ALL" + " " + getIntent().getIntExtra("price", 0));
    }
}

Logcat output for crash of MonumentsFragment:

 --------- beginning of crash
06-19 11:29:44.197 21087-21087/com.example.user.appsightseeing E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                 Process: com.example.user.appsightseeing, PID: 21087
                                                                                 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference
                                                                                     at com.example.user.appsightseeing.MonumentsFragment.onCreateView(MonumentsFragment.java:56)
                                                                                     at android.support.v4.app.Fragment.performCreateView(Fragment.java:2192)
                                                                                     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1299)
                                                                                     at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528)
                                                                                     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1595)
                                                                                     at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:758)
                                                                                     at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2363)
                                                                                     at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2149)
                                                                                     at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2103)
                                                                                     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2013)
                                                                                     at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:710)
                                                                                     at android.os.Handler.handleCallback(Handler.java:751)
                                                                                     at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                     at android.os.Looper.loop(Looper.java:154)
                                                                                     at android.app.ActivityThread.main(ActivityThread.java:6119)
                                                                                     at java.lang.reflect.Method.invoke(Native Method)
                                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
                                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Sindi B
  • 62
  • 10

1 Answers1

1

get your image like this frim intent

int imageID =getIntent().getIntExtra("image",0);

and set in to your image view

imageView.setImageResource(imageID);
AskNilesh
  • 67,701
  • 16
  • 123
  • 163
  • Thank you !!!! It's working perfectly! I do not have points to accept the answer :( @NileshRathod – Sindi B Jun 19 '17 at 07:33
  • It worked with the first way. I have previously tried with the bitmap way, but it didn't work. @NileshRathod – Sindi B Jun 19 '17 at 07:34
  • I was checking stackoverflow documentation how to gain my reputation and in this moment the only thing i believe is to vote my question up. :/ @NileshRathod – Sindi B Jun 19 '17 at 07:39
  • Done :D @NileshRathod Thank you again – Sindi B Jun 19 '17 at 07:42
  • Another question: I copied the code in ParksFragment and pasted in the MonumentsFragment (because i have a navigation drawer with these fragment) , changed the class title of fragment and layout to corrispond to the MonumentsFragment, but the app crashes then when i click on the Monuments item in menu. What do i have to do else? @NileshRathod – Sindi B Jun 19 '17 at 09:25
  • whats is exception is genrated – AskNilesh Jun 19 '17 at 09:26
  • @SindiB i think you kust missed you listview in right fragment to paste just double check it – AskNilesh Jun 19 '17 at 09:35
  • What does this mean ? Can't I use the same listview i created first in parkfragment, in other fragments ? Do I have to create other listviews? @NileshRathod – Sindi B Jun 19 '17 at 09:36
  • yup you have to crate other listview menas in your parkfragment listview and for your MonumentsFragment your have to your other listview – AskNilesh Jun 19 '17 at 09:38
  • I suppose i should also create corresponding array adapter and detalactivity for each fragment. @NileshRathod – Sindi B Jun 19 '17 at 09:41
  • yes your are right..@SindiB for each list view you have to crate adapter for each fragment – AskNilesh Jun 19 '17 at 09:44
  • Thank you very much @NileshRathod – Sindi B Jun 19 '17 at 09:45