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

时间:2017-07-10 18:29:41

标签: android listview android-activity listviewitem

我有两个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();
  

第一个活动的ListView适配器代码(使用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);
  

下一个活动的ListView适配器代码(使用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);

2 个答案:

答案 0 :(得分:0)

  1. 使用intent Bundle将questionId或问题No移至下一个活动
  2. 在问题列表视图的适配器中,为具有类似问题的问题设置不同的背景颜色。您甚至可以将背景设置为淡入淡出动画,或者在一定的毫秒或秒数后更改为正常。
  3. 所有需要的代码很多写一些东西(一些代码),我们可以帮助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;
            }
        });
    

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

答案 1 :(得分:0)

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

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

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