Добавить несколько текстовых представлений в GridView - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь добавить текстовые представления в GridView, но, к сожалению, добавлен только один из ... Я пытаюсь сделать другой адаптер для второго TextView, но такая же проблема. Я думаю, что проблема в этой строке в моем адаптере, но я не могу разобраться ..

((TextView) view.findViewById(R.id.title)).setText(catList.get(position));

Итак, это мой GridView

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
android:background="#DDACA4A4"
tools:context=".MainActivity">

<GridView
    android:id="@+id/catGridView"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:padding="10dp"
    android:background="@drawable/border"
    android:columnWidth="100dp"
    android:gravity="center"
    android:numColumns="2">


</GridView>

И это mainActivity java class

catGrid = findViewById (R.id.catGridView);

    List<String> catList2 = new ArrayList<>();
    catList2.add("subTitle 1");
    catList2.add("subTitle 2");
    catList2.add("subTitle 3");
    catList2.add("subTitle 4");
    catList2.add("subTitle 5");
    catList2.add("subTitle 6");

    CatGridAdapter2 adapter2 = new CatGridAdapter2(catList2);
    catGrid.setAdapter(adapter2);

    List<String> catList = new ArrayList<>();
    catList.add("Cat 1");
    catList.add("Cat 2");
    catList.add("Cat 3");
    catList.add("Cat 4");
    catList.add("Cat 5");
    catList.add("Cat 6");

    CatGridAdapter adapter = new CatGridAdapter(catList);
    catGrid.setAdapter(adapter);
}

А это мой адаптер

public class CatGridAdapter extends BaseAdapter {


private List<String> catList;


public CatGridAdapter(List<String> catList) {
    this.catList = catList;
}
@Override
public int getCount() {
    return catList.size();
}

@Override
public Object getItem(int position) {
    return null;
}

@Override
public long getItemId(int position) {
    return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View view;

    if (convertView == null) {
        view = LayoutInflater.from(parent.getContext()).inflate(R.layout.quizitem, parent, false);
    } else {
        view = convertView;
    }
    ((TextView) view.findViewById(R.id.title)).setText(catList.get(position));


    return view;
}

Я пытаюсь найти решение, но ничего не могу найти ..

1 Ответ

0 голосов
/ 18 июня 2020

Вы должны создать класс модели, который будет выглядеть так:

public class MyData {
private String cat;
private String SubTitle;

public MyData(String cat, String subTitle) {
    this.cat = cat;
    SubTitle = subTitle;
}

public String getCat() {
    return cat;
}

public void setCat(String cat) {
    this.cat = cat;
}

public String getSubTitle() {
    return SubTitle;
}

public void setSubTitle(String subTitle) {
    SubTitle = subTitle;
}

}

тогда внутри вашего класса MainActivity вы должны установить данные и инициализировать свой адаптер, например:

List<MyData> catList = new ArrayList<>();
catList.add(new MyData("Cat 1","SubCat 1"));
catList.add(new MyData("Cat 2","SubCat 2"));
catList.add(new MyData("Cat 3","SubCat 3"));
CatGridAdapter adapter = new CatGridAdapter(catList);
catGrid.setAdapter(adapter);

также вы должны изменить конструктор класса адаптера

private List<MyData> catList;
public CatGridAdapter(List<MyData> catList) {
this.catList = catList;

}

и не забудьте изменить класс items xml. вам нужно добавить два текстовых представления, это заголовок, другой может быть там подзаголовком, и использовать оба текстовых представления в классе адаптера, например

((TextView) view.findViewById(R.id.title)).setText(catList.get(position));
((TextView) view.findViewById(R.id.SubTitle)).setText(catList.get(position));

- Не стесняйтесь обсуждать, если у вас есть какие-либо запросы

...