Android RecyclerView cache

0

I have a recyrcleview on most devices worked fine, however on some devices in version 7, it gives a bugada, gets type with cache of the first elements. Does anyone have any ideas? example of normal running photo plus case is rolled it starts to bugar. Thanks in advance for your attention.

publicclassAlvosAdapterextendsRecyclerView.Adapter<AlvosAdapter.ViewHolder>{intTEMPO_CLICK_BUTTON=400;publicinterfaceOnItemClickListener{voidonItemClick(AlvosResultadoitem);}privatefinalList<AlvosResultado>items;privatefinalOnItemClickListenerlistener;publicAlvosAdapter(List<AlvosResultado>items,OnItemClickListenerlistener){this.items=items;this.listener=listener;}@OverridepublicViewHolderonCreateViewHolder(ViewGroupparent,intviewType){Viewv=LayoutInflater.from(parent.getContext()).inflate(R.layout.item_lista_alvos,parent,false);returnnewViewHolder(v);}@OverridepublicvoidonBindViewHolder(finalViewHolderholder,finalintposition){holder.bind(items.get(position),listener);holder.alfa.setTag(position);holder.delta.setTag(position);holder.charlie.setTag(position);holder.procedure.setTag(position);holder.nooshoot.setTag(position);holder.miss.setTag(position);holder.alfa.setOnTouchListener(newView.OnTouchListener(){longstart=0,finish=0,total=0;@OverridepublicbooleanonTouch(Viewv,MotionEventevent){if(event.getAction()==MotionEvent.ACTION_DOWN){start=System.currentTimeMillis();}elseif(event.getAction()==MotionEvent.ACTION_UP){finish=System.currentTimeMillis();total=finish-start;if(total<=TEMPO_CLICK_BUTTON){if(holder.alvo.getText().subSequence(0,1).equals("T") || holder.alvo.getText().subSequence(0, 2).equals("DT")) {
                        String a = String.valueOf(Integer.parseInt(holder.alfa.getText().toString()) + 1);
                        items.get(position).setAlfa(String.valueOf(Integer.parseInt(items.get(position).getAlfa()) + 1));
                        holder.alfa.setText(a);
                        AlvosActivity.alvos[0] += 1;
                    } else {
                        String a = String.valueOf(Integer.parseInt(holder.alfa.getText().toString()) + 1);
                        if (holder.miss.getText().equals("1")) {
                            holder.miss.setText("0");
                            holder.alfa.setText("1");
                            addAcertoAlvo(0);
                            tirarAcertoAlvo(3);
                            items.get(position).setMiss("0");
                            items.get(position).setAlfa("1");
                            AlvosActivity.preencherTotalPontos(AlvosActivity.btMiss, AlvosActivity.alvos[3].toString());
                        } else if (holder.alfa.getText().equals("1")) {
                            mensagemAlvos(v.getContext());
                        } else {
                            items.get(position).setAlfa(String.valueOf(Integer.parseInt(items.get(position).getAlfa()) + 1));
                            holder.alfa.setText(a);
                            addAcertoAlvo(0);
                        }
                    }
                } else {
                    if (Integer.parseInt(holder.alfa.getText().toString()) >= 0) {
                        AlvosActivity.alvos[0] -= Integer.parseInt(holder.alfa.getText().toString());
                        items.get(position).setAlfa("0");
                        holder.alfa.setText("0");
                    }
                }
                AlvosActivity.checkSelecionadoZerar();
                AlvosActivity.calcularHitFactor();
                AlvosActivity.preencherTotalPontos(AlvosActivity.btAlfa, AlvosActivity.alvos[0].toString());
                color(holder);
            }
            return true;
        }
    });
    holder.charlie.setOnTouchListener(new View.OnTouchListener() {
        long start = 0, finish = 0, total = 0;

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                start = System.currentTimeMillis();
            } else if (event.getAction() == MotionEvent.ACTION_UP) {
                finish = System.currentTimeMillis();
                total = finish - start;
                if (total <= TEMPO_CLICK_BUTTON) {
                    if (holder.alvo.getText().subSequence(0, 1).equals("T") || holder.alvo.getText().subSequence(0, 2).equals("DT")) {
                        String a = String.valueOf(Integer.parseInt(holder.charlie.getText().toString()) + 1);
                        holder.charlie.setText(a);
                        AlvosActivity.alvos[1] += 1;
                        items.get(position).setCharlie(String.valueOf(Integer.parseInt(items.get(position).getCharlie()) + 1));
                    }
                } else {
                    if (Integer.parseInt(holder.charlie.getText().toString()) >= 0) {
                        AlvosActivity.alvos[1] -= Integer.parseInt(holder.charlie.getText().toString());
                        items.get(position).setCharlie("0");
                        holder.charlie.setText("0");
                    }
                }
                AlvosActivity.checkSelecionadoZerar();
                AlvosActivity.calcularHitFactor();
                color(holder);
                AlvosActivity.preencherTotalPontos(AlvosActivity.btCharlie, AlvosActivity.alvos[1].toString());
            }
            return true;
        }
    });
    holder.delta.setOnTouchListener(new View.OnTouchListener() {
        long start = 0, finish = 0, total = 0;

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                start = System.currentTimeMillis();
            } else if (event.getAction() == MotionEvent.ACTION_UP) {
                finish = System.currentTimeMillis();
                total = finish - start;
                if (total <= TEMPO_CLICK_BUTTON) {
                    if (holder.alvo.getText().subSequence(0, 1).equals("T") || holder.alvo.getText().subSequence(0, 2).equals("DT")) {
                        String a = String.valueOf(Integer.parseInt(holder.delta.getText().toString()) + 1);
                        holder.delta.setText(a);
                        AlvosActivity.alvos[2] += 1;
                        items.get(position).setDelta(String.valueOf(Integer.parseInt(items.get(position).getDelta()) + 1));
                    }
                } else {
                    if (Integer.parseInt(holder.delta.getText().toString()) >= 0) {
                        AlvosActivity.alvos[2] -= Integer.parseInt(holder.delta.getText().toString());
                        items.get(position).setDelta("0");
                        holder.delta.setText("0");
                    }
                }
                AlvosActivity.checkSelecionadoZerar();
                AlvosActivity.calcularHitFactor();
                AlvosActivity.preencherTotalPontos(AlvosActivity.btDelta, AlvosActivity.alvos[2].toString());
                color(holder);
            }
            return true;
        }
    });

    holder.miss.setOnTouchListener(new View.OnTouchListener() {
        long start = 0, finish = 0, total = 0;

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                start = System.currentTimeMillis();
            } else if (event.getAction() == MotionEvent.ACTION_UP) {
                finish = System.currentTimeMillis();
                total = finish - start;
                if (total <= TEMPO_CLICK_BUTTON) {
                    if (holder.alvo.getText().subSequence(0, 1).equals("T") || holder.alvo.getText().subSequence(0, 2).equals("DT")) {
                        String a = String.valueOf(Integer.parseInt(holder.miss.getText().toString()) + 1);
                        holder.miss.setText(a);
                        AlvosActivity.alvos[3] += 1;
                        items.get(position).setMiss(String.valueOf(Integer.parseInt(items.get(position).getMiss()) + 1));
                    } else {
                        String a = String.valueOf(Integer.parseInt(holder.miss.getText().toString()) + 1);
                        if (holder.alfa.getText().equals("1")) {
                            holder.alfa.setText("0");
                            holder.miss.setText("1");
                            addAcertoAlvo(3);
                            tirarAcertoAlvo(0);
                            items.get(position).setMiss("1");
                            items.get(position).setAlfa("0");
                            AlvosActivity.preencherTotalPontos(AlvosActivity.btAlfa, AlvosActivity.alvos[0].toString());
                        } else if (holder.miss.getText().equals("1")) {
                            mensagemAlvos(v.getContext());
                        } else {
                            AlvosActivity.alvos[3] += 1;
                            holder.miss.setText(a);
                            items.get(position).setMiss(String.valueOf(Integer.parseInt(items.get(position).getMiss()) + 1));
                        }
                    }
                } else {
                    if (Integer.parseInt(holder.miss.getText().toString()) >= 0) {
                        AlvosActivity.alvos[3] -= Integer.parseInt(holder.miss.getText().toString());
                        items.get(position).setMiss("0");
                        holder.miss.setText("0");
                    }
                }
                AlvosActivity.checkSelecionadoZerar();
                AlvosActivity.calcularHitFactor();
                AlvosActivity.preencherTotalPontos(AlvosActivity.btMiss, AlvosActivity.alvos[3].toString());
                color(holder);
            }
            return true;
        }
    });
    holder.nooshoot.setOnTouchListener(new View.OnTouchListener() {
        long start = 0, finish = 0, total = 0;

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                start = System.currentTimeMillis();
            } else if (event.getAction() == MotionEvent.ACTION_UP) {
                finish = System.currentTimeMillis();
                total = finish - start;
                if (total <= TEMPO_CLICK_BUTTON) {
                    String a = String.valueOf(Integer.parseInt(holder.nooshoot.getText().toString()) + 1);
                    holder.nooshoot.setText(a);
                    AlvosActivity.alvos[4] += 1;
                    items.get(position).setNooShoot(String.valueOf(Integer.parseInt(items.get(position).getNooShoot()) + 1));
                } else {
                    if (Integer.parseInt(holder.nooshoot.getText().toString()) >= 0) {
                        AlvosActivity.alvos[4] -= Integer.parseInt(holder.nooshoot.getText().toString());
                        items.get(position).setNooShoot("0");
                        holder.nooshoot.setText("0");
                    }
                }
                AlvosActivity.checkSelecionadoZerar();
                AlvosActivity.calcularHitFactor();
                AlvosActivity.preencherTotalPontos(AlvosActivity.btNoshoot, AlvosActivity.alvos[4].toString());
            }
            return true;
        }
    });
    holder.procedure.setOnTouchListener(new View.OnTouchListener() {
        long start = 0, finish = 0, total = 0;

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                start = System.currentTimeMillis();
            } else if (event.getAction() == MotionEvent.ACTION_UP) {
                finish = System.currentTimeMillis();
                total = finish - start;
                if (total <= TEMPO_CLICK_BUTTON) {
                    String a = String.valueOf(Integer.parseInt(holder.procedure.getText().toString()) + 1);
                    holder.procedure.setText(a);
                    AlvosActivity.alvos[5] += 1;
                    items.get(position).setProcedure(String.valueOf(Integer.parseInt(items.get(position).getProcedure()) + 1));
                } else {
                    if (Integer.parseInt(holder.procedure.getText().toString()) >= 0) {
                        AlvosActivity.alvos[5] -= Integer.parseInt(holder.procedure.getText().toString());
                        items.get(position).setProcedure("0");
                        holder.procedure.setText("0");
                        AlvosActivity.checkSelecionadoZerar();
                    }
                }
                AlvosActivity.checkSelecionadoZerar();
                AlvosActivity.calcularHitFactor();
                AlvosActivity.preencherTotalPontos(AlvosActivity.btProcedure, AlvosActivity.alvos[5].toString());
            }
            return true;
        }
    });
}

public static void mensagemAlvos(Context context) {
    Toast toast = Toast.makeText(context,
            "Alvo não pode ter mais de 1 hits", Toast.LENGTH_SHORT);
    toast.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL, 0, 0);
    toast.show();
}

public static void addAcertoAlvo(int pos) {
    try {
        AlvosActivity.alvos[pos] += 1;
    } catch (Exception e) {
        AlvosActivity.alvos[pos] = 1;
    }
}

public void tirarAcertoAlvo(int pos) {
    try {
        AlvosActivity.alvos[pos] -= 1;
    } catch (Exception e) {
        AlvosActivity.alvos[pos] = 0;
    }
}

public void color(ViewHolder holder) {
    if (holder.alvo.getText().subSequence(0, 1).equals("T") || holder.alvo.getText().subSequence(0, 2).equals("DT")) {
        int soma = Integer.parseInt(holder.alfa.getText().toString()) + Integer.parseInt(holder.delta.getText().toString()) + Integer.parseInt(holder.charlie.getText().toString()) + Integer.parseInt(holder.miss.getText().toString());
        if (soma >= 3) {
            mudarCorFundoPapeis(R.drawable.cell_red, holder.alfa, holder.delta, holder.charlie, holder.miss);
        } else if (soma == 1) {
            mudarCorFundoPapeis(R.drawable.cell_green, holder.alfa, holder.delta, holder.charlie, holder.miss);
        } else if (soma == 2) {
            mudarCorFundoPapeis(R.drawable.cell_green2, holder.alfa, holder.delta, holder.charlie, holder.miss);
        } else {
            mudarCorFundoPapeis(R.drawable.cell_shape, holder.alfa, holder.delta, holder.charlie, holder.miss);
        }
    } else {
        int soma = Integer.parseInt(holder.alfa.getText().toString()) + Integer.parseInt(holder.miss.getText().toString());
        if (soma >= 1) {
            mudarCorFundoMetais(R.drawable.cell_green2, holder.alfa, holder.miss);
        } else {
            mudarCorFundoMetais(R.drawable.cell_shape, holder.alfa, holder.miss);
        }
    }
}

public static void mudarCorFundoPapeis(int drawable, Button alfa, Button delta, Button charlie, Button miss) {
    alfa.setBackgroundResource(drawable);
    delta.setBackgroundResource(drawable);
    charlie.setBackgroundResource(drawable);
    miss.setBackgroundResource(drawable);
}

public static void mudarCorFundoMetais(int drawable, Button alfa, Button miss) {
    alfa.setBackgroundResource(drawable);
    miss.setBackgroundResource(drawable);
}

@Override
public int getItemCount() {
    return items.size();
}

static class ViewHolder extends RecyclerView.ViewHolder {

    private Button alvo;
    private Button alfa;
    private Button delta;
    private Button charlie;
    private Button miss;
    private Button nooshoot;
    private Button procedure;

    public ViewHolder(View itemView) {
        super(itemView);
        alvo = itemView.findViewById(R.id.btAlvo);
        alfa = itemView.findViewById(R.id.btAlfa);
        delta = itemView.findViewById(R.id.btDelta);
        charlie = itemView.findViewById(R.id.btCharlie);
        miss = itemView.findViewById(R.id.btMiss);
        nooshoot = itemView.findViewById(R.id.btNoShoot);
        procedure = itemView.findViewById(R.id.btProcedure);
    }

    public void bind(final AlvosResultado item, final OnItemClickListener listener) {
        AlvosActivity.recycler.setRecycledViewPool(new RecyclerView.RecycledViewPool());
        AlvosActivity.recycler.getRecycledViewPool().clear();
        alvo.setText(item.getAlvo());
        alfa.setText(item.getAlfa());
        charlie.setText(item.getCharlie());
        delta.setText(item.getDelta());
        miss.setText(item.getMiss());
        nooshoot.setText(item.getNooShoot());
        procedure.setText(item.getProcedure());
        if (!alvo.getText().subSequence(0, 1).equals("T") && !alvo.getText().subSequence(0, 2).equals("DT")) {
            int soma = Integer.parseInt(item.getAlfa()) + Integer.parseInt(item.getMiss());
            delta.setEnabled(false);
            PorterDuffColorFilter colorFilter = new PorterDuffColorFilter(Color.GRAY, PorterDuff.Mode.MULTIPLY);
            delta.getBackground().setColorFilter(colorFilter);
            delta.setText("");
            charlie.setEnabled(false);
            charlie.getBackground().setColorFilter(colorFilter);
            charlie.setText("");
            if (soma >= 1) {
                mudarCorFundoMetais(R.drawable.cell_green2, alfa, miss);
            }
        } else {
            int soma = Integer.parseInt(item.getAlfa()) + Integer.parseInt(item.getMiss()) + Integer.parseInt(item.getDelta()) + Integer.parseInt(item.getCharlie());
            if (soma >= 3) {
                mudarCorFundoPapeis(R.drawable.cell_red, alfa, delta, charlie, miss);
            } else if (soma == 1) {
                mudarCorFundoPapeis(R.drawable.cell_green, alfa, delta, charlie, miss);
            } else if (soma == 2) {
                mudarCorFundoPapeis(R.drawable.cell_green2, alfa, delta, charlie, miss);
            } else {
                mudarCorFundoPapeis(R.drawable.cell_shape, alfa, delta, charlie, miss);
            }
        }
    }
}

the items

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:shrinkColumns="*"
android:stretchColumns="*">

<TableRow
    android:id="@+id/tableRow1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <Button
        android:id="@+id/btAlvo"
        android:layout_weight="1"
        android:background="@drawable/cell_shape"
        android:gravity="center"
        android:padding="10dip"
        android:text="P1"
        android:layout_marginRight="3px"/>

    <Button
        android:id="@+id/btAlfa"
        android:layout_weight="1"
        android:background="@drawable/cell_shape"
        android:gravity="center"
        android:text="A1"
        android:layout_marginLeft="3px"/>

    <Button
        android:id="@+id/btCharlie"
        android:layout_weight="1"
        android:background="@drawable/cell_shape"
        android:gravity="center"
        android:text="A1" />

    <Button
        android:layout_marginRight="3px"
        android:id="@+id/btDelta"
        android:layout_weight="1"
        android:background="@drawable/cell_shape"
        android:gravity="center"
        android:padding="10dip"
        android:text="C1" />

    <Button
        android:layout_marginLeft="3px"
        android:id="@+id/btMiss"
        android:layout_weight="1"
        android:background="@drawable/cell_shape"
        android:gravity="center"
        android:padding="10dip"
        android:text="D1" />

    <Button
        android:id="@+id/btNoShoot"
        android:layout_weight="1"
        android:background="@drawable/cell_shape"
        android:gravity="center"
        android:padding="10dip"
        android:text="M1" />

    <Button
        android:id="@+id/btProcedure"
        android:layout_weight="1"
        android:background="@drawable/cell_shape"
        android:gravity="center"
        android:padding="10dip"
        android:text="N1"
        android:layout_marginRight="6px"/>
</TableRow>

    
asked by anonymous 11.07.2018 / 00:21

0 answers

How to search for generic text / phrases in a certain language? ___ ___ erkimt Python - Tkinter - Dynamic CheckButton not take the value of the variable when referenced from another file / screen ______ qstntxt ___

I'm having the following problem: I can get the value of a dynamic variable (checkbutton) when the whole program is in a single file with only one function:

%pre%

However if I separate the code into two files, each one on a screen and two modules, I can only get the 0 values of the checkboxes:

File 1: TwoWindows2

%pre%

File 2: TwoWindows2

%pre%

Can anyone help me with this?

    
______ azszpr313528 ___

Variables from the other file can be accessed normally if you import the other file - but not with the %code% syntax, and use the filename as a prefix:

For example, you could put all the variables in a file name %code% and use a line like this

%pre%

And inside that file you can access the variables with %code% and so on.

Your code is pretty messy, but sometimes doing is the only way to learn - I recommend a third file, why else can you to fall into a problem of circular import dependency, the way it is working.

Another note: The keyword "global" only makes sense within functions - and says that those variables within the function will be visible in that module (file) - (and thus will be visible from the other files using the form prefix, as I showed above): using "global" inside classes and outside functions does not make sense. (It would even make a difference, but one has to know a lot Python to know exactly what it is doing, and even then, it would hardly be the right way to do anything.)

    
___