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

Posted

技术标签:

【中文标题】单击上一个活动的项目(列表视图)后如何突出显示下一个活动的项目(列表视图)?【英文标题】:How to Highlight the Item (Listview) of Next Activity After Clicking the Item(Listview) of Previous Activity? 【发布时间】:2017-12-14 14:47:13 【问题描述】:

我有两个Fragments。一个Fragment 由问题组成,而其他Fragment 由答案组成。例如,如果一个人点击问题(8)这意味着你可以说Item 否 8,那么它应该转到下一个活动并突出显示该问题的答案(8)。我被困住了。我会非常感谢你。 这是一些代码,它们正在向下一个活动发送问题编号或列出项目编号,以及接收此问题编号的下一个活动代码,我将其保存到Interger“a”中。现在什么类型的 IF 条件可以在 Next Activity 中起作用?

第一个活动

lst.setOnItemClickListener(new AdapterView.OnItemClickListener() 
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) 

            int index = position + 1;
            Intent it = new Intent(this.getActivity(), NextActivity.class);
            it.putExtra("Qlist", index);
            startActivity(it);


        

下一个活动

Intent it = getActivity().getIntent();

    int a = it.getIntExtra("Qlist", 0);

    String result=String.valueOf(a);

    Toast.makeText(getActivity(), ""+a, Toast.LENGTH_LONG).show();

First Activity的ListView Adapter代码(使用SQlite)

DatabaseAccess db=DatabaseAccess.getInstance(getActivity().getApplicationContext());



    List<String> lst;
    db.open();
    lst=db.getexamq();
    db.close();

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(ExamQ.this.getActivity(), android.R.layout.simple_list_item_1, lst);
    lv.setAdapter(adapter);

Next Activity 的ListView Adapter 代码(使用SQlite)

DatabaseAccess db=DatabaseAccess.getInstance(getActivity().getApplicationContext());



    List<String> lst;
    db.open();
    lst=db.getexamq();
    db.close();

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(ExamA.this.getActivity(), android.R.layout.simple_list_item_1, lst);
    lv.setAdapter(adapter);

【问题讨论】:

你能贴一些代码吗? 你已经得到了什么?我很乐意提供帮助,但感谢您的一点点工作。 我正在尝试但重点是我实际上想知道从哪里开始。 ..但让我想想..... 【参考方案1】:
    使用 Intent Bundle 将 questionId 或 question No 移动到下一个活动 在 Questions ListView 的适配器中,为具有相似 questionId 的问题设置不同的背景颜色。您甚至可以将背景设置为具有淡入淡出动画或在一定的毫秒或秒数后变为正常。

所需的代码很多写一些东西(一些代码),我们可以帮助 ListViewAdapter 以防它不起作用

编辑:快速自定义适配器代码示例

    lv.setAdapter(new ArrayAdapter(ExamQ.this.getActivity(), android.R.layout.simple_list_item_1, android.R.id.text1, lst)
        @Override
        public View getView(final int position, View convertView, ViewGroup parent) 
            View v = convertView;
            final String examQ = lst[position];

            if (v == null) 
                LayoutInflater vi = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                v = vi.inflate(android.R.layout.simple_list_item_1, null);
            

            TextView tv = (TextView) v.findViewById(android.R.id.text1);
            tv.setText(examQ);


            if( examQ.equals(result))  // Unique identifier here
                v.setBackground(Color.RED); //Some other fancy color here
            
            return v;
        
    );

但是,我刚刚发现您没有每个问题的唯一标识符。所以暂时只使用问题字符串并将其传递给下一个活动

【讨论】:

我可以将问题编号移至下一个活动。但是你能告诉我,如果我们使用 If Condition 将 Question no 与 Next 活动的 Item No 匹配,如果它们匹配,则突出显示它。这可行吗? 是的,提供适配器代码、xml和活动代码&我可以帮忙 看一看。当我用我的代码更新我的问题时。 提供 ListView 适配器代码 再看看吧。【参考方案2】:

假设您在第二个片段的列表视图中为每个答案都有一个文本视图。然后您可以比较第二个片段中listview适配器的getView()中的问题id。现在,当您找到答案时,只需致电 textview.setBackgroundColor()

编辑: 在lv.setAdapter (adapter);之后添加

View v = lv.getViewAt(a);
if(v!=null)
    v.setBackgroundColor (Color.RED);

【讨论】:

你能用一些代码解释一下吗?我的意思是你有什么代码可以告诉我如何用下一个活动检查这个问题吗??

以上是关于单击上一个活动的项目(列表视图)后如何突出显示下一个活动的项目(列表视图)?的主要内容,如果未能解决你的问题,请参考以下文章

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

如何在单击另一个视图(即按钮)时突出显示自定义列表视图

Android:将列表视图项设置为“选定”(突出显示)

如何使用在列表项单击时动态生成的文本视图标签突出显示我在列表视图中的当前位置

ListView 项目在滚动后保持突出显示

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