Вы можете переключать видимость в самой строке listView. Сначала я хотел бы заявить о проблеме, обнаруженной в вашем коде:
TextView tel = findViewById (R.id.txt_tel);
это должно быть TextView tel= view.findViewById(R.id.txt_tel);
, так как телефон TextView не является частью вашего основного макета, а вместо этого макета listView.
Ниже приведены два объяснения того, как обрабатывать видимость.
Базовый ответ:
В методе public View getView
просто установите onClickListener
или onTouchListener
для любого элемента, по которому вы хотите щелкнуть, чтобы сделать остальные видимыми.
Чтобы переключить видимость ваших TextViews, просто сделайте textView.setVisibility(View.VISIBLE);
и поместите это в onClickListener
. Весь этот код должен быть в вашем адаптере ListView.
Разработанный ответ:
Вот код
public class MyAdapter extends ArrayAdapter<MyClass> {
private Context mContext;
Activity activity;
private List<MyClass> class = new ArrayList<>();
public LogAdapter(Activity a, Context context, ArrayList<MyClass> list) {
super(context, 0, list);
mContext = context;
activity = a;
class= list;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
View listItem = convertView;
if (listItem == null){
//If the row is empty, inflate it with your elements found in the 'mylistview' layout file.
listItem = LayoutInflater.from(mContext).inflate(R.layout.mylistview, parent, false);
}
//These names and views are made up. You can change them to suit your needs for which items should become visible on a certain items click.
Button changeVisibility = listItem.findViewById(R.id.change);
TextView name = listItem.findViewById(R.id.name);
TextView surname = listItem.findViewById(R.id.surname);
changeVisibility.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View view) {
name.setVisibility(View.VISIBLE);
surname.setVisibility(View.VISIBLE);
}
}
}
}
Имена, такие как MyAdapter
и класс MyClass
- это только примеры, их нужно создать. Как только вы это сделаете, ваш класс Adapter должен выглядеть как мой выше. Вы также можете изменить имя кнопки и TextView, это зависит только от того, каким файлом макета вы надуете свой listItem
.
Если у вас все еще есть проблемы с вашим кодом, проверьте эту ссылку для объяснения того, как сделать ваш собственный просмотр списка с нуля.
Надеюсь, это поможет!