Java 如何不重用Listview中的位置?
我遇到了一个问题,我有一个从数组接收多个项目的listview。这些项目是来自不同作者的短语。我创建了一个复选框作为书签。因此,当作者最喜欢的句子1被标记时,它将被写入SharedReference并转移到新活动。当作者B的句子1的最喜欢的标记出现时,它只是取代了作者a的句子1的标记 然后我注意到listview中的每个位置都在重复,例如:作者A>句子1->has position 0作者B>句子1->has position 0 因此,我无法记录不同项目中的短语,但在收藏夹中的相同位置,我不知道是否可以在数组中而不是在listview中获取位置,因为在那里可以获取不会重复自身的真实位置,或者如果可能,不要在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 因此,我无法记录不同项目中的短语,但在收藏夹中的相同位置,我不知
// 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平滑滚动,强烈建议重新使用这些列表项。如果您希望在每次更改中生成新视图并连接到适配器,这将是性能问题。可能问题是位置被声明为最终(常量)谢谢,罗杰问题是“最后的”。