如何隐藏回收者视图项目从微调器中获取价值

时间:2019-07-16 21:37:29

标签: android

我希望当用户单击“قرآن”时我的程序不可见,否则会导致tarjuma和tafsir,

就像当他单击“معترجمہ”时,我的程序可见古兰经和tarjuma并隐藏了tafsir。

我正在使用spinner,它工作正常,但是刷新我的recyclerview之后,但我希望不刷新recyclerview,这意味着当用户选择任何Spinner值recyclerview时,都会更改视图。

刷新意味着要去参加另一项活动。

任何帮助我的人!

这是我的RecyclerView适配器

@Override
    public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {
        final Quran quran = quranic.get(position);
    if (Quran.spinner.equals("قرآن")) {
        holder.quran.setText(Html.fromHtml(quran.getQuranText()));
        holder.reference.setText(quran.getReferences());
        holder.tarjuma.setVisibility(View.INVISIBLE);
        holder.tafsir.setVisibility(View.INVISIBLE);
    } else if (Quran.spinner.equals("مع ترجمہ")) {
        holder.quran.setText(Html.fromHtml(quran.getQuranText()));
        holder.tarjuma.setText(Html.fromHtml(quran.getTarjuma()));
        holder.reference.setText(quran.getReferences());
        holder.tafsir.setVisibility(View.INVISIBLE);
    } else {
        holder.quran.setText(Html.fromHtml(quran.getQuranText()));
        holder.tarjuma.setText(Html.fromHtml(quran.getTarjuma()));
        holder.tafsir.setText(Html.fromHtml(quran.getTafsir()));
        holder.reference.setText(quran.getReferences());
    }
}

我的MainActivity

Spinner spinner = (Spinner) findViewById(R.id.visibility);
        List<String> spinnerList = new ArrayList<>();
        spinnerList.add(0, "Select");
        spinnerList.add(1, "قرآن");
        spinnerList.add(2, "مع ترجمہ");
        spinnerList.add(3, "مع تفسیر");
        ArrayAdapter dataAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, spinnerList);
        dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(dataAdapter);
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                if (parent.getItemAtPosition(position).equals("Select")) {
                    // do nothing
                } else {
                    String item = parent.getItemAtPosition(position).toString();
                    Quran.spinner = item;
                    Toast.makeText(parent.getContext(), "Selected: " + item, Toast.LENGTH_LONG).show();
                }
            }
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
                // TODO Auto-generated method stub
            }
        });

Quran.java

public static String spinner = "";

2 个答案:

答案 0 :(得分:0)

Spinner spinner = (Spinner) findViewById(R.id.visibility);
            List<String> spinnerList = new ArrayList<>();
            spinnerList.add(0, "Select");
            spinnerList.add(1, "قرآن");
            spinnerList.add(2, "مع ترجمہ");
            spinnerList.add(3, "مع تفسیر");
            ArrayAdapter dataAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, spinnerList);
            dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spinner.setAdapter(dataAdapter);
            spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                    if (parent.getItemAtPosition(position).equals("Select")) {
                        // do nothing
                    } else {
                        String item = parent.getItemAtPosition(position).toString();
                        Quran.spinner = item;
                  //add this line 
                        yourAdapterObject.notifyDataSetChanged();
                        Toast.makeText(parent.getContext(), "Selected: " + item, Toast.LENGTH_LONG).show();
                    }
                }
                @Override
                public void onNothingSelected(AdapterView<?> parent) {
                    // TODO Auto-generated method stub
                }
            });

答案 1 :(得分:0)

每次从微调器中选择一个项目时,只需在回收商视图适配器上调用notifyDataSetChanged();

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                if (parent.getItemAtPosition(position).equals("Select")) {
                    // do nothing
                } else {
                    String item = parent.getItemAtPosition(position).toString();
                    Quran.spinner = item;
                    Toast.makeText(parent.getContext(), "Selected: " + item, Toast.LENGTH_LONG).show();
                    RecyclerView.Adapter adapter = recyclerView != null ? recyclerView.getAdapter() : null;
                    if (adapter != null) {
                        adapter.notifyDataSetChanged();
                    }
                }
            }
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
                // TODO Auto-generated method stub
            }
        });

如果保留对回收站视图适配器的引用,则更好,然后替换:

RecyclerView.Adapter adapter = recyclerView != null ? recyclerView.getAdapter() : null;
     if (adapter != null) {
         adapter.notifyDataSetChanged();
     }

作者:

    adapter.notifyDataSetChanged();
}