【问题标题】:get position of each item clicked in Listview after GridView获取 GridView 之后在 Listview 中单击的每个项目的位置
【发布时间】:2017-07-30 07:49:42
【问题描述】:

我在 GridView 和 List 视图之间设计了意图。当我单击 gridview 的项目时,将打开与 listview 相关的下一个意图。然后,当我单击列表视图的项目时,会打开新意图以显示与列表视图的每个项目相关的文本。

有一个带有arraylist的对象,并且该对象也在arraylist中。 显示 Gridview 以列出 arraylist 的每个对象。 显示Listview以列出对象中arraylist的每一项。

我得到了第一个 girdview 和第一个 listview 的项目。

我有一个问题如何获取gridview 和list view 的每个位置。

这是下面最后一个意图中的代码。

gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {

            switch (position){

                case 0:
                    Toast.makeText(getApplicationContext(),"London",Toast.LENGTH_SHORT).show();
                    Intent intent = new Intent(MainActivity.this,AttactivePlacesActivity.class);
                    intent.putExtra("position_griditem_one",position);
                    startActivity(intent);
                    break;

                case 1:
                    Toast.makeText(getApplicationContext(),"Paris",Toast.LENGTH_SHORT).show();
                    startActivity(new Intent(MainActivity.this,AttactivePlacesActivity.class)
                            .putExtra("position_griditem_two",position));
                    break;

        }
    });

AttactivePlacesActivity

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {

                switch(position){

                    case 0:
                        Toast.makeText(getApplicationContext(),"London Object",Toast.LENGTH_SHORT).show();
                        Intent intent = new Intent(AttactivePlacesActivity.this,AttactivePlaceObject.class);
                        intent.putExtra("position_listitem_one",position);
                        startActivity(intent);
                        break;

                    case 1: 
                        startActivity(new Intent(AttactivePlacesActivity.this,AttactivePlaceObject.class)
                                .putExtra("position_listitem_two",position));
                        break;


                }


            }
        });

AttactivePlaceObject

// get from a previous gridview to get each item of gridview
        GridView gridView = (GridView) findViewById(R.id.gridlist);

        // get from a previous listview to get each item of listview
        ListView listView = (ListView) findViewById(R.id.listviewAttactivePlaces);


        //gridView.getItemIdAtPosition();

        //listView.getItemIdAtPosition();


        ImageView attractivePlaceImage = (ImageView) findViewById(R.id.attractive_place_image);

        TextView attractivePlaceInformation = (TextView) findViewById(R.id.attractive_place_detailed_information);


        ImageView location = (ImageView) findViewById(R.id.location_icon);


        attractivePlaceImage.setImageResource(
                cityAttactivePlaces.get(0).getAttactivePlaces().get(0).getmAttaticePlaceImageResourceId());


        attractivePlaceInformation.setText(cityAttactivePlaces.get(0).getAttactivePlaces().get(0).getPlaceDetailInformation());

我的目标 当我单击 London 时,会列出伦敦的景点。点击巴黎的话,巴黎的名胜被记载。点击任何城市的任何有吸引力的地方,详细信息显示为最后意图。

如何获得 gridview 和 listviews 的位置以显示最后的意图。

【问题讨论】:

    标签: android listview gridview


    【解决方案1】:
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
                           Toast.makeText(getApplicationContext(),position+"",Toast.LENGTH_SHORT).show();
    
    Intent intent = new Intent(AttactivePlacesActivity.this,AttactivePlaceObject.class);
                            intent.putExtra("position",position);
                            startActivity(intent);
    
                     }
                });
    

    注意-- Intent 应该由 Activity 发送,并且必须由 Activity 接收。

    【讨论】:

    • listivew 和 gridview setonItemClickListener 在以前的意图中。我已经定义了它们。如何到达 gridview 项目(位置 2)和 listview(位置 1)-> 像这样的 information.setText(c.get(2).getText().get(1).getInformation()); .不使用数字就存在问题。
    • 您的意思是说,如果您单击列表上的第一个位置,您希望在下一个活动中使用该位置编号。不是吗?
    • 正确。但由于定义了先前的意图,我不知道 setonItemClickListener 是否在类中定义。我怎样才能访问它。
    • 您可以像使用意图更改活动一样执行此操作,然后使用“intentInstance.putExtra("key", "value");"这个函数你可以将大部分数据发送到另一个活动,你可以在另一个活动中接收这些数据“Intent intent= getIntent(); dataType variable= intent.getStringExtra("same key");”
    • 有很多可用的重载。你可以试试这个
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-10
    • 2013-04-11
    • 2016-03-17
    • 2019-02-17
    相关资源
    最近更新 更多