Пользовательский вид сетки

#java #android #android-layout #android-activity #android-gridview

#java #Android #android-макет #android-активность #android-gridview

Вопрос:

Это мой код:

 public class CustomGridAdapter extends BaseAdapter{

Context ctx;
String [] items ={"72","58","67","77","90"} ; //Can be images or video or any other content
String [] stuff = {"bus to town ","Bus to north","Bus to west","Bus to east","Bus out"};
public CustomGridAdapter(Context c) {
    ctx = c;
}

@Override
public int getCount() {
    return items.length;
}

@Override
public Object getItem(int position) {
    return items[position];
}

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    TextView tv = new TextView(ctx);
    TextView tv2 = new TextView(ctx);
    tv.setText(String.valueOf(items[position]));
    tv2.setText(String.valueOf(stuff[position]));
    return tv;
}
  

}

Нужна помощь, пытаясь выяснить, как отобразить tv2 ниже tv. Есть предложения?

Комментарии:

1. Почему бы вам не создать XML-макет и не раздуть эти xml в методе getView (….)?

Ответ №1:

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

 @Override
public View getView(int position, View convertView, ViewGroup parent) {
    LinearLayout layout = new LinearLayout(ctx);
    layout.setOrientation(LinearLayout.VERTICAL);
    layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
            LayoutParams lparams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

    TextView tv = new TextView(ctx);
    TextView tv2 = new TextView(ctx);
    tv.setLayoutParams(lparams);
    tv2.setLayoutParams(lparams);
    tv.setText(String.valueOf(items[position]));
    tv2.setText(String.valueOf(stuff[position]));
    layout.addView(tv);
    layout.addView(tv2);
    return layout;
}
  

Комментарии:

1. LinearLayout layout = new LinearLayout(this);, это не работает какие-либо предложения о том, как заставить это работать?

2. Конструктор LinearLayout (CustomGridAdapter) не определен, как то, что он говорит

3. Я исправил опечатку, замените это на ctx