列表项单击,在详细活动上从列表视图活动中导航下一个和上一个列表项

     2023-04-19     290

关键词:

【中文标题】列表项单击,在详细活动上从列表视图活动中导航下一个和上一个列表项【英文标题】:List item click, on detail activity navigate through next and previous list items from list view activity 【发布时间】:2016-09-12 23:09:48 【问题描述】:

我有 2 个活动,第一个包含列表视图,当用户单击该列表视图的列表项时,将启动详细视图活动(第二个活动)。

现在在第二个活动中,我有 2 个按钮,NEXT 按钮和 PREVIOUS 按钮,所以当用户点击 NEXT 按钮时,第一个活动的下一个列表项必须被显示。并且在单击上一个按钮时,必须显示上一个列表项。

我在第一个活动中扩展了 ArrayAdapter,以显示自定义列表项。在适配器上,有 2 个项目,即 2 个文本视图。

当用户点击并启动第二个活动时,这两个文本视图的详细信息将被详细显示。并通过项目进行导航,回到第一个活动,然后每个项目再次启动第二个活动,这对用户来说是忙碌的场景,所以我想在详细视图活动本身上导航项目。 那我该怎么办?

到目前为止我所做的是,我扩展了 ArrayAdapter,所以从 getView() 方法中,我获取了位置值,然后在我所做的第二个活动中,

 next = (ImageView) findViewById(R.id.next);
    previous = (ImageView) findViewById(R.id.previous);

    next.setOnClickListener(new OnClickListener() 
        @Override
        public void onClick(View v) 

            position++;

            Log.e("position", String.valueOf(position));

        
    );

    previous.setOnClickListener(new OnClickListener() 
        @Override
        public void onClick(View v) 

            position--;

            Log.e("position", String.valueOf(position));

        
    );

但我不知道下一步该怎么做?

位置值取自第一个活动,其中 intent.putExtra("position", position) 并在第二个活动中获取 使用 intent.getStringExtra("position")。

我什至无法理解 this 和 that ,只是理论上的。提前致谢。


EDIT-1:

我在第一个活动中有 custom ArrayAdapter,并且在 onclickListener 上,我已经申请了,

 convertView.setOnClickListener(new OnClickListener() 
            @Override
            public void onClick(View view) 
                Intent intent = new Intent(fActivity.this, sActivity.class);

                intent.putExtra("txt1", "name");

                intent.putExtra("txt2", "address");

                intent.putExtra("position", position);

                startActivity(intent);
            
        );

这个位置是从

获取的
public View getView(final int position, View convertView, ViewGroup parent) 
....

这个方法,在

 class homeAdapter extends ArrayAdapter<list>

正如我之前在同一面板上所写的那样。现在在第二个活动中,我必须在第二个活动中使用下一个和上一个按钮获得 txt1txt2

【问题讨论】:

【参考方案1】:

你只需要这样做,

在第二个活动中,

str1 = fActivity.listAdapter.getItem(position).data1;
str2 = fActivity.listAdapter.getItem(position).data2;

在第一个活动中,

public static ArrayAdapter<List> listAdapter;

你去吧,你可以得到你的答案。

干杯!

【讨论】:

【参考方案2】:

如果您有静态列表并且不想动态更改列表数据,最简单的方法是将列表数据存储在您的 strings.xml 文件中,例如

<string-array name="textview1_items> 
<item>head1</item>
<item>head2</item>
<item>head3</item>
.
.
.
</string-array>

同样适用于 textview 2 项。

然后在您的列表适配器和您的第二个活动中从这些字符串数组中检索列表项。

要从 java 访问这些数组,您需要执行以下操作:

String[] headers = context.getResources.getStringArray(R.array.textview1_items); //在适配器中使用上下文,在第二个活动中使用 this

现在,当用户单击列表项时,只需将选定项的位置传递给第二个活动,并从您的字符串数组中检索该索引的信息。

希望对您有所帮助! 如有任何疑问,请追问!

【讨论】:

抱歉,我有自定义列表视图,其中包含 3 个文本视图和图像视图。无论如何感谢您的努力.. 您还可以为您的可绘制对象设置一个数组。 一切都是动态的,没有检索到静态项目。谢谢。【参考方案3】:

为此,您必须保持您的 Array/List 全局,以便两个 Activity 都可以访问它。您也可以通过捆绑将整个数组/列表传递给下一个活动来做到这一点。

你必须做到以下几点:

    将点击的位置和整个数组/列表放在包中,并将其发送到第二个活动。 从 bundle 中获取当前位置和数组/列表,并显示当前位置的详细信息。 点击Next按钮增加位置,从list.array中获取该位置的item并显示该位置的详细信息。 点击Previous按钮减少位置,从list.array中获取该位置的item并显示该位置的详细信息。

【讨论】:

【参考方案4】:

如果您粘贴了用于填充 ListView 的代码,那将会非常有帮助。您使用哪种对象来创建列表?尽管如此,这里有一些代码和方法。我在这里假设了几件事,如果它们与您的代码不匹配,请评论答案。

    创建一个 ArrayList,现在它可以像字符串 ArrayList&lt;String&gt; 或您想要的其他对象一样简单,例如 ArrayList&lt;Items&gt; // 示例Array&lt;Items&gt; itemsList = new ArrayList&lt;Items&gt;();

    现在在列表视图上的 itemClickListener 中,使用 Intents 将位置和整个数组列表传递给您的第二个活动。

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener()

    @override
    public void onItemClick(AdapterView<?> parent, View view,
    int position, long id) 
        Items item = (Items) parent.getItemAtPosition(position);
        Intent startDetailActivity = new Intent(Activity1.this, Activity2.class);
        startDetailActivity.putExtra("position", position);
        startDetailActivity.putExtra("itemList", itemList);
        startActivity(startDetailActivity);
    
    

    );

    在您的活动 2 中,解析意图数据:

    Intent i = this.getIntent(); int clickedPosition = i.getIntExtra(position, 0); ArrayList&lt;Items&gt; itemsList = i.getSerializableExtra("itemList");

    通过在 itemsList 中的位置获取对象来设置文本视图上的数据:

    textView1.setText(itemsList.get(clickedPosition).getSomeText()); textView2.setText(itemsList.get(clickedPosition).getSomeOtherText());

最后,当您单击活动 2 上的下一个和上一个按钮时,然后增大或减小 clickedPosition 变量的大小,使其指向列表中的正确对象。只要确保您从数组列表中请求的索引是有效的,否则您将获得索引越界异常。这可以通过在请求该索引处的对象之前检查数组列表的大小来完成。

现在,这个答案假设了很多事情,比如你有一个包含某个对象的数组列表。这些对象中的变量至少具有 getter 方法,并且这些变量所在的类实现了 Serializable 接口。 如果您在实现此代码时遇到任何问题,请将其放入 cmets.xml 中。我很乐意尽我所能提供帮助。

EDIT-1:

现在,我猜您已经能够解决您的 sActivity 中的意图,但是您在从位置和列表显示 sActivity 上的数据时遇到了问题。所以,首先要确保你已经通过了点击的位置以及意图中的整个列表。在 sActivity 中解决它们。现在,要从列表中显示 sActivity 中的数据,请编写以下代码行(在解决 sActivity 上的意图之后)。

yourTextView.setText(yourList.get(clickedPosition).getSomething());
yourTextView2.setText(yourList.get(clickedPosition).getSomeOtherThing());

不要被 getSomething() 弄糊涂了,它只是一个例子。你应该得到你想要在这里显示的数据。我还没有看到你正在制作的列表,所以我放了这段代码。现在,处理下一个和上一个按钮点击。只需在下次单击时添加到单击位置变量,例如:

nextButton.setOnClickListener(new View.OnClickListener() 
@Override
        public void onClick(View v) 
           clickedPosition++;
yourTextView.setText(yourList.get(clickedPosition).getSomething());
yourTextView2.setText(yourList.get(clickedPosition).getSomeOtherThing());

        
    );

在上一个按钮 onClick 上,只需减少 clickedPosition 变量,如:

clickedPosition--;
//set text views here then

我的朋友应该这样做。

【讨论】:

如果使用链接bundle use 并使用前面提到的捆绑包,那么它是正确的解决方案吗?正如@Ashish_Tiwari solution for this issue 所说 @vibhor_soni 在我的编辑之后你有别的出路吗? @JackSmith,刚刚看到你的编辑,基本上和我之前解释的一样。你有你的键值对的意图。如前所述,在 sActivity 中解决它们。就 text1 和 text2 而言,你已经完成了。至于列表本身,您需要在您的意图中添加另一个额外内容,即您从中显示列表视图的 ArrayList。在 sActivity 中解决它,然后,当您获得下一个和上一个单击事件时,添加或减去位置并使用列表显示数据。如果您仍然不清楚,请粘贴整个代码。但是,请先尝试一下。 @JackSmith,关于捆绑的问题。您也可以使用它,只是您需要先创建一个捆绑对象并为其设置数据。将该捆绑包添加到您的意图中。然后在 sActivity 中解析 bundle,并从 bundle 中获取项目。 我无法在intent.putExtra 中传递itemList.. 而且这个解决方案不起作用,因为即使position 的值增加或减少,我也无法使用这种方法,因为我不确定如何将 txt1、txt2 和位置值放入列表并在 sActivity.. 中获得相同的列表

不同列表视图项的按钮单击时的不同活动

】不同列表视图项的按钮单击时的不同活动【英文标题】:Differentactivitiesonbuttonclickofdifferentlistviewitems【发布时间】:2016-02-1309:41:55【问题描述】:我有一个包含列表视图的应用程序。单击listview项目时,它会打开一个包含textview... 查看详情

当我单击列表视图的操作项时,将文本从列表视图传递到另一个活动

】当我单击列表视图的操作项时,将文本从列表视图传递到另一个活动【英文标题】:PassingTextFromListviewtoanotherActivitywhenIclickactionitemofthelistview【发布时间】:2013-03-1015:04:59【问题描述】:我的主要活动中有一个列表视图。在每... 查看详情

在片段的工具栏中向上导航(代码片段)

...反应。我想向上导航将我带回主要活动以查看文章的网格列表。实际行为(向上导航工作)我在主要活动中从网格中选择一篇文章,详细活动显示相应的片段。我向右滑动以查看下一篇文章。然后我单击向上导航按钮,然后返回... 查看详情

单击上一个活动的项目(列表视图)后如何突出显示下一个活动的项目(列表视图)?

】单击上一个活动的项目(列表视图)后如何突出显示下一个活动的项目(列表视图)?【英文标题】:HowtoHighlighttheItem(Listview)ofNextActivityAfterClickingtheItem(Listview)ofPreviousActivity?【发布时间】:2017-12-1414:47:13【问题描述】:我有... 查看详情

我如何使用意图从列表视图转到下一个活动? [复制]

】我如何使用意图从列表视图转到下一个活动?[复制]【英文标题】:Howdoiuseintenttogotonextactivityfromlistview?[duplicate]【发布时间】:2018-07-1301:06:51【问题描述】:我创建了带有自定义适配器的列表视图,以将我的图像和文本加载到... 查看详情

在列表视图中添加收藏按钮

】在列表视图中添加收藏按钮【英文标题】:Addingfavoritebuttoninlistview【发布时间】:2016-03-3122:07:00【问题描述】:我有一个listview,它对每个列表项都有一个收藏按钮,单击该按钮应将该列表项添加到另一个名为myfav9rites的活动... 查看详情

未创建 Android listview 内容视图

...航菜单的android活动。当我单击底部导航栏上的一项时,列表片段显示在活动顶部。列表片段可以通过两种方式关闭。1.点击活动(活动中的某处)-这有效2.单击另一项(不是初始化列表片段的项)例如:我单击第4项,它会在活... 查看详情

单击列表视图时在活动中显示不同的信息

】单击列表视图时在活动中显示不同的信息【英文标题】:Displaydifferentinformationinactivitywhenlistviewisclicked【发布时间】:2015-04-0815:03:02【问题描述】:我希望列表视图打开一个新活动并在单击列表视图的某些行时显示某些信息。... 查看详情

用另一个列表替换主活动中的列表并从视图中删除旧列表

】用另一个列表替换主活动中的列表并从视图中删除旧列表【英文标题】:Replacelistinmasteractivitywithanotherlistandremoveoldlistfromview【发布时间】:2015-08-0605:16:36【问题描述】:当盯着我的应用程序时,主片段中会显示一个列表(list_mai... 查看详情

单击一个列表视图传输两个列表视图数据

】单击一个列表视图传输两个列表视图数据【英文标题】:Transfertwolistviewdataonclickofonelistview【发布时间】:2016-02-1319:46:16【问题描述】:在我的活动中,我有两个包含一些数据的列表视图。在第一个列表视图上,选定的行将在... 查看详情

从以前的活动中获取文本并将其添加到另一个活动列表视图

】从以前的活动中获取文本并将其添加到另一个活动列表视图【英文标题】:Gettingtextfrompreviousactivityandaddingitanotheractivitieslistview【发布时间】:2015-06-3011:33:17【问题描述】:如何在单击按钮时将项目动态添加到列表中?文本被... 查看详情

单击时如何使列表视图导航到另一个页面

】单击时如何使列表视图导航到另一个页面【英文标题】:Howtomakelistviewthatnavigatetoanotherpagewhenclicked【发布时间】:2021-11-2217:52:26【问题描述】:我想制作listview,当用户单击列表项时,它将导航到具有标题、长文本和图像的其... 查看详情

悬停列表项上的引导导航栏删除类活动,鼠标移出返回类活动

】悬停列表项上的引导导航栏删除类活动,鼠标移出返回类活动【英文标题】:Bootstrapnavbaronhoverlistitemremoveclassactive,onmouseoutreturnclassactive【发布时间】:2017-04-2508:35:31【问题描述】:你能帮我用引导导航栏实现这种情况吗?正如... 查看详情

如何在单击列表视图项目时出现勾选并且在单击下一个项目之前不会消失也不会在转到另一个活动时消失

】如何在单击列表视图项目时出现勾选并且在单击下一个项目之前不会消失也不会在转到另一个活动时消失【英文标题】:HowtoappearedtickwhenListViewitemclickedanddonotdisappearedtillthenextitemclickedalsodonotdisappearedwhengotoanotheractivity【发布时... 查看详情

单击另一个活动时如何发送自定义arraylist的列表项的数据?

】单击另一个活动时如何发送自定义arraylist的列表项的数据?【英文标题】:Howtosenddataofthelistitemofacustomarraylistwhenclickedtoanotheractivity?【发布时间】:2019-12-0509:55:54【问题描述】:我有一个自定义歌曲对象的数组列表,当单击列... 查看详情

如何获取所选列表视图项中的id以打开上下文菜单并通过下一个活动来实现目标。(代码片段)

列表视图项长按打开上下文菜单并执行3选项视图,编辑,删除。查看是单击而不是获取listview中的选定项目的ID和通过下一个活动的意图......????我展示你的代码......Broker_Management.java遵循代码意图通过下一个活动,而不是传递putEx... 查看详情

如何将单击的列表项值传递给另一个活动?

】如何将单击的列表项值传递给另一个活动?【英文标题】:HowToPassClickedListItemValuetoanotherActivity?【发布时间】:2021-04-1501:42:25【问题描述】:我正在制作一个短信应用程序,我有一个联系人列表,我希望能够点击联系人并将该... 查看详情

单击列表视图时,无法在另一个活动中显示来自 sqlite 数据库资产的文本

】单击列表视图时,无法在另一个活动中显示来自sqlite数据库资产的文本【英文标题】:Notableshowtextfromsqlitedatabaseassetsinanotheractivitywhenlistviewclicked【发布时间】:2018-10-1020:59:41【问题描述】:嗨iam实际上是android的新手iam试图从sq... 查看详情