Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何不重用Listview中的位置?_Java_Android_Arrays_Listview - Fatal编程技术网

Java 如何不重用Listview中的位置?

Java 如何不重用Listview中的位置?,java,android,arrays,listview,Java,Android,Arrays,Listview,我遇到了一个问题,我有一个从数组接收多个项目的listview。这些项目是来自不同作者的短语。我创建了一个复选框作为书签。因此,当作者最喜欢的句子1被标记时,它将被写入SharedReference并转移到新活动。当作者B的句子1的最喜欢的标记出现时,它只是取代了作者a的句子1的标记 然后我注意到listview中的每个位置都在重复,例如:作者A>句子1->has position 0作者B>句子1->has position 0 因此,我无法记录不同项目中的短语,但在收藏夹中的相同位置,我不知

我遇到了一个问题,我有一个从数组接收多个项目的listview。这些项目是来自不同作者的短语。我创建了一个复选框作为书签。因此,当作者最喜欢的句子1被标记时,它将被写入SharedReference并转移到新活动。当作者B的句子1的最喜欢的标记出现时,它只是取代了作者a的句子1的标记

然后我注意到listview中的每个位置都在重复,例如:作者A>句子1->has position 0作者B>句子1->has position 0

因此,我无法记录不同项目中的短语,但在收藏夹中的相同位置,我不知道是否可以在数组中而不是在listview中获取位置,因为在那里可以获取不会重复自身的真实位置,或者如果可能,不要在listview中重复

我的代码是:

// DECLARANDO COMPONENTES

    private ListView lista;
    private AlertDialog alerta;
    private String[] frasesR;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_frase_autor_frase);

    // VINCULANDO COMPONENTES

        lista = (ListView) findViewById(R.id.lista_id);



        // VERIFICANDO VALOR NULO E ADICIONANDO NO ARRAY

        Bundle extra = getIntent().getExtras();

        List<String> textos = new ArrayList<>();
        int numeroDeTextos = 911;

        for (int i = 0; i < numeroDeTextos; i++) {
            String texto = extra.getString("texto" + i);

            // Verifica se é nulo ou vázio.
            if (texto == null || texto.trim().length() == 0) {
                continue;
            }

            textos.add(texto);
        }

            // CRIANDO O ARRAY

            final String[] frases = textos.toArray(new String[0]);


            // ENVIANDO FRASES PARA PARAMETRO GLOBAL

                frasesR = frases;



            // UTILIZANDO O ADPTADOR PARA RECEBER O LISTVIEW

            ArrayAdapter<String> adaptador = new ArrayAdapter<String>
                    (


                            // Primeiro Parametro do Array Adpater é o Context

                            getApplicationContext(),

                            // Segundo Parametro do Array Adpater é o Layout

                            android.R.layout.simple_list_item_1,
                            android.R.id.text1,

                            // Terceiro Parametro do Array Adapter é indicar o nome do Array para exibição

                            frasesR

                    );

            lista.setAdapter(adaptador);




            // EVENTO DE CLIQUE

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


                   // CHECK BOX

                   View checkBoxView = View.inflate(FraseAutorFrase.this, R.layout.checkbox, null);

                   CheckBox checkBox = (CheckBox) checkBoxView.findViewById(R.id.checkbox);
                   checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

                       @Override
                       public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

                           // Save to shared preferences

                           SharedPreferences sharedPreferences = getSharedPreferences("arquivoPreferencia", MODE_PRIVATE);
                           SharedPreferences.Editor editor = sharedPreferences.edit();
                           editor.putString("frase"+position, frasesR[position]);
                           editor.commit();


                       }
                   });
                   checkBox.setText("Marcar como Favorito?");
//声明多个组件
私有ListView lista;
私人alerta;
私有字符串[]frasesR;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u frase\u autor\u frase);
//长春花成分
lista=(ListView)findViewById(R.id.lista\u id);
//验证VALOR NULO E ADICIONANDO无阵列
Bundle extra=getIntent().getExtras();
List textos=new ArrayList();
int numeroDeTextos=911;
对于(int i=0;i
Android出于性能目的回收列表项。如果您希望ListView平滑滚动,强烈建议重新使用这些列表项。如果您希望在每次更改中生成新视图并连接到适配器,这将是性能问题。可能问题是位置被声明为最终(常量)谢谢,罗杰问题是“最后的”。