Создание нескольких TextView и их прокрутка

199
04 августа 2021, 18:40

Как сделать добавление нескольких(!) TextView, повесить на них onClick и их прокрутку?

Answer 1

Посмотрите в сторону RecyclerView. Там можно будет создать несколько TextView, повесить на них onClick. Вот отличный гайд по RecyclerView. Вот, как можно сделать с кликами:

import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import java.util.Arrays;
import java.util.List;
public class MainActivity extends Activity {
    @Override
    protected void onCreate(@Nullable final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final RecyclerView list = findViewById(R.id.list);
        list.setLayoutManager(new LinearLayoutManager(this));
        list.setAdapter(
                new Adapter(
                        Arrays.asList("a", "b", "c", "d", "e"),
                        new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                Toast.makeText(
                                        MainActivity.this,
                                        ((TextView) v).getText() + " clicked!",
                                        Toast.LENGTH_SHORT
                                ).show();
                            }
                        }
                )
        );
    }
    static class Adapter extends RecyclerView.Adapter<ViewHolder> {
        private final List<String> data;
        private final View.OnClickListener clickListener;
        public Adapter(
                @NonNull final List<String> data, 
                @NonNull final View.OnClickListener clickListener
        ) {
            this.data = data;
            this.clickListener = clickListener;
        }
        @NonNull
        @Override
        public ViewHolder onCreateViewHolder(
                @NonNull final ViewGroup viewGroup, 
                final int i
        ) {
            return new ViewHolder(
                    new TextView(viewGroup.getContext()), 
                    clickListener
            );
        }
        @Override
        public void onBindViewHolder(
                @NonNull final ViewHolder viewHolder,
                final int i
        ) {
            viewHolder.bind(data.get(i));
        }
        @Override
        public int getItemCount() {
            return data.size();
        }
    }
    static class ViewHolder extends RecyclerView.ViewHolder {
        private final View.OnClickListener clickListener;
        public ViewHolder(
                @NonNull final View itemView,
                @NonNull final View.OnClickListener clickListener
        ) {
            super(itemView);
            this.clickListener = clickListener;
        }
        public void bind(@NonNull final String text) {
            final TextView textView = (TextView) itemView;
            textView.setText(text);
            textView.setOnClickListener(clickListener);
        }
    }
}
READ ALSO
написание строки из массива double[] array

написание строки из массива double[] array

Имеется массив дробных чисел{100

199
Не могу сделать приложение JavaFX

Не могу сделать приложение JavaFX

Сделал приложение на JavaFX решил "скомпоновать" в приложениеРаботаю в Intellij IDEA лицензия, когда хочу создать модуль в Artifacts JavaFX Applicaton, при выборе...

154
Java. Нужна критика.. Оцените код

Java. Нужна критика.. Оцените код

Изучаю Java 3-4 месяца, дошел до многопоточностиРешил написать свою простую программу из того, что знаю

472