列表视图项目单击后,图像不会显示在其他活动中

时间:2017-06-19 07:22:20

标签: java android listview

我在片段中创建了一个自定义列表视图,并将其与另一个活动相关联,以便在单击时显示列表中每个项目的详细信息。活动正在加载并显示标题,说明和其他信息,但列表视图中的图像不会显示在其他活动中。并且此片段的代码不适用于我的菜单的另一个片段,例如MonumentsFragment。那么,如何传递这些图像? 这是一些代码, 我的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;
    }
}

我的DetailActivity类:

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));
    }
}

MonumentsFragment崩溃的Logcat输出:

 --------- 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)

1 个答案:

答案 0 :(得分:1)

让你的形象像这样的frim意图

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

并设置为您的图片视图

imageView.setImageResource(imageID);