Проблема с горизонтальным рециклером в android - PullRequest
0 голосов
/ 24 января 2020

Я заполняю свой Recycler View данными всех записей из моей базы данных SQLite (одна запись под другой). Мне нужно прокрутить горизонтальный вид Recycler, потому что некоторые слова больше и не входят в экран, как вы можете видеть на изображении ниже:

enter image description here

Это мой макет RecyclerView, но он все еще не работает:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">

<android.support.constraint.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <EditText
        android:id="@+id/etIngresar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="Ingrese un verbo"
        android:inputType="textPersonName"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHorizontal_bias="0.08"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.023" />

    <Button
        android:id="@+id/bnMostrar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="mostrar"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHorizontal_bias="0.822"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.019" />
</android.support.constraint.ConstraintLayout>

<android.support.v7.widget.RecyclerView
    android:id="@+id/rvListItems"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginLeft="20dp"
    android:layout_marginTop="70dp"
    android:layout_marginRight="20dp"
    android:layout_marginBottom="70dp"
    android:scrollbarSize="4dp"
    android:scrollbars="horizontal"
    android:orientation="horizontal" />

</RelativeLayout>

Я не могу установить это в своей деятельности, поскольку он преобразует горизонтальную прокрутку, НО все записи помещаются в одну строку, и я не хочу этого.

    LinearLayoutManager manager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL,true);

Вот так:

enter image description here

EDITED

My Recycler Просмотр класса:

public class RecyclerViewAdapter extends RecyclerView.Adapter {
private ArrayList<Items> listItem ;

public RecyclerViewAdapter(ArrayList<Items> listItem) {
    this.listItem = listItem;
}

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View contentView = LayoutInflater.from(parent.getContext()).inflate(R.layout.lista, null);
    System.out.println("CREATE VIEW HOLDER: " + viewType);
    return new Holder(contentView);
}

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
    Items item = listItem.get(position);
    Holder Holder = (Holder) holder;
    Holder.tvVerbo.setText(item.getVerbo());
    Holder.tvReferencia.setText(item.getReferencia());
    Holder.tvEu.setText(item.getEu());
    Holder.tvVoce.setText(item.getVoce());
    Holder.tvNos.setText(item.getNos());
    Holder.tvVoces.setText(item.getVoces());

    System.out.println("BIND VIEW HOLDER: " + position);
}

@Override
public int getItemCount() {
    return listItem.size();
}

public class Holder extends RecyclerView.ViewHolder{
    TextView tvVerbo;
    TextView tvReferencia;
    TextView tvEu;
    TextView tvVoce;
    TextView tvNos;
    TextView tvVoces;

    public Holder(View itemView) {
        super(itemView);
        tvVerbo = itemView.findViewById(R.id.tvLista1);
        tvReferencia = itemView.findViewById(R.id.tvLista2);
        tvEu = itemView.findViewById(R.id.tvLista3);
        tvVoce = itemView.findViewById(R.id.tvLista4);
        tvNos = itemView.findViewById(R.id.tvLista5);
        tvVoces = itemView.findViewById(R.id.tvLista6);

    }
}
}

Моя активность Verbos2 при вызове Recycler:

public class Verbos2 extends AppCompatActivity {

RecyclerView recyclerViewItem;
RecyclerViewAdapter recyclerViewVerbos;
EditText etVerbos;
Button mostrar;

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

    etVerbos = findViewById(R.id.etIngresar);
    mostrar = findViewById(R.id.bnMostrar);

    recyclerViewItem = findViewById(R.id.rvListItems);
    LinearLayoutManager manager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL,false);
    recyclerViewItem.setLayoutManager(manager);

    mostrar.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            List<Items> completeList = new ArrayList<>();
            completeList.addAll(mostrarVerbos());
            recyclerViewVerbos = new RecyclerViewAdapter((ArrayList<Items>) completeList);
            recyclerViewItem.setAdapter(recyclerViewVerbos);
        }
    });
}

public List<Items> mostrarVerbos(){
    BaseDeDatos admin = new BaseDeDatos(getApplicationContext(), "verbos.db", getApplicationContext(), 11);
    SQLiteDatabase db = admin.getReadableDatabase();
    String[] parametros = {etVerbos.getText().toString()};
    Cursor cursor = db.rawQuery("SELECT * FROM verbos WHERE verbos =?", parametros);
    List<Items> verbos= new ArrayList<>();
    if(cursor.moveToFirst()){
        do {
            verbos.add(new Items(cursor.getString(1), " " + cursor.getString(2), " " + cursor.getString(3), " " + cursor.getString(4), " " + cursor.getString(5), " " + cursor.getString(6)));
        }while (cursor.moveToNext());
    }else{
        Toast.makeText(getApplicationContext(), "El verbo no existe", Toast.LENGTH_LONG).show();
    }
    return verbos;
}
}

Список xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:andoid="http://schemas.android.com/apk/res-auto">

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/tvLista1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="algo1"
        android:textSize="15sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/tvLista2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="algo 2"
        android:textSize="15sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/tvLista3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="algo 3"
        android:textSize="15sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/tvLista4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="algo 4"
        android:textSize="15sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/tvLista5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="algo 5"
        android:textSize="15sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/tvLista6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="algo 5"
        android:textSize="15sp"
        android:textStyle="bold" />

</LinearLayout>

</LinearLayout>

EDITED 2

Задница, которую вы видите, сгенерировала горизонтальную прокрутку к каждой записи. Мне нужен только один горизонтальный свиток, который охватывает все записи одновременно (в данном случае 3 записи)

enter image description here

Ответы [ 2 ]

0 голосов
/ 24 января 2020

Попробуйте добавить горизонтальный вид прокрутки внутри макета вашего элемента и установите maxLines 1 в ваш элемент textView.

Попробуйте следующий код

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <HorizontalScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fillViewport="true"
        android:overScrollMode="never">
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <TextView
                android:id="@+id/tvLista1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="algo1"
                android:maxLines="1"
                android:textSize="15sp"
                android:textStyle="bold" />
            <TextView
                android:id="@+id/tvLista2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="algo 2"
                android:maxLines="1"
                android:textSize="15sp"
                android:textStyle="bold" />
            <TextView
                android:id="@+id/tvLista3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="algo 3"
                android:maxLines="1"
                android:textSize="15sp"
                android:textStyle="bold" />
            <TextView
                android:id="@+id/tvLista4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="algo 4"
                android:maxLines="1"
                android:textSize="15sp"
                android:textStyle="bold" />
            <TextView
                android:id="@+id/tvLista5"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="algo 5"
                android:maxLines="1"
                android:textSize="15sp"
                android:textStyle="bold" />
            <TextView
                android:id="@+id/tvLista6"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="algo 5"
                android:maxLines="1"
                android:textSize="15sp"
                android:textStyle="bold" />
        </LinearLayout>
    </HorizontalScrollView>
</LinearLayout>

Надеюсь, это поможет Вам!

Спасибо.

0 голосов
/ 24 января 2020

Я не проблема. Вы должны установить значение multiline в true в TextView внутри элемента макета переработчика, чтобы текст мог занимать несколько строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...