Я просто пытаюсь создать базовое c приложение с простым списком, и если мы щелкаем элементы этого представления, оно будет sh, и после того, как все элементы в представлении окажутся в невидимой позиции, мы должны вернуть все обратно к видимому.
Я уже написал код для vani sh элементов при нажатии, но застрял при обращении их обратно к видимому, потому что Я не нашел способа получить заданный элемент c в ListView для установки каждого видимого представления с использованием al oop ---
My Activity Main XML file -
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ListView
android:id="@+id/myListView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
Моя основная деятельность java file ---
package com.example.listviewdemo;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Timer;
import java.util.concurrent.TimeUnit;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ListView myListView = findViewById(R.id.myListView);
ArrayList<String> members = new ArrayList<String>();
members.add("Iron Man");
members.add("Captain America");
members.add("Thor");
members.add("Hulk");
members.add("Captain Marvel");
final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, members);
myListView.setAdapter(arrayAdapter);
final int[] actionPosition = {4, 4, 4, 4, 4};
final int[] actualPosition = {0, 0, 0, 0, 0};
myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
view.setVisibility(View.INVISIBLE);
int visibility = view.getVisibility();
int viewItem = adapterView.getPositionForView(view);
Log.i("Visibility", ""+ visibility +" of item "+ viewItem);
actualPosition[viewItem] = visibility;
Log.i("actualPositionArray", Arrays.toString(actualPosition));
if (Arrays.equals(actionPosition, actualPosition)) {
Toast.makeText(MainActivity.this, "matched!", Toast.LENGTH_SHORT).show();
for (int index = 0; index<actionPosition.length; index++){
try {
TimeUnit.SECONDS.sleep(1);
} catch (Exception e) {
e.printStackTrace();
}
View counter = (View) myListView.getChildAt(index);
counter.setVisibility(View.VISIBLE);
}
// reverting actualPosition array!--
for (int ind = 0; ind<actualPosition.length; ind++) {
actualPosition[ind] = 0;
}
}
}
});
}
}
В двух словах, я пытаюсь получить конкретное представление c в listView, чтобы сделать его видимым, вот и все, что мне нужно!
Пожалуйста, помогите!