Не могу понять как делать кастомный адаптер. Вот попробовал сделать как понял, но выходит ошибка при запуске приложения! Layout'ов 2 — в одном ListView, а в другом четыре TextView на вертикальном LinearLayout.
Вот листинг:
public class MainActivity extends AppCompatActivity {
private ListView listView;
private MyList myList1;
private MyList myList2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.listView);
myList1 = new MyList("abc", "a333412", "312421", "12314124");
myList2 = new MyList("gewg", "gewgewas", "gweewwe", "gdshgweh");
List<MyList> myLists = new ArrayList<MyList>();
myLists.add(myList1);
myLists.add(myList2);
ArrayAdapter<MyList> arrayAdapter = new ArrayAdapter<MyList>(MainActivity.this, R.layout.list_layout, myLists);
listView.setAdapter(arrayAdapter);
}
}
public class MyAdapter extends ArrayAdapter {
private List<MyList> list;
public MyAdapter (Context context, List<MyList> list) {
super(context, R.layout.list_layout, R.id.textView1, list);
this.list = list;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.list_layout,
parent, false);
TextView textView1 = (TextView) convertView.findViewById(R.id.textView1);
TextView textView2 = (TextView) convertView.findViewById(R.id.textView2);
TextView textView3 = (TextView) convertView.findViewById(R.id.textView3);
TextView textView4 = (TextView) convertView.findViewById(R.id.textView4);
MyList myList = list.get(position);
textView1.setText(myList.getA1().toString());
textView2.setText(myList.getA2().toString());
textView3.setText(myList.getA3().toString());
textView4.setText(myList.getA3().toString());
return convertView;
}
}
В классе MyList четыре переменных типа String, геттеры-сеттеры, конструктор из всех 4 переменных и пустой конструктор.
public class SampleListViewAdapterAllGroup extends BaseAdapter {
public static Context context;
ArrayList<String> data;
public SampleListViewAdapterAllGroup(Context context) {
this.context = context;
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int position) {
return data.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final View twoLineListItem;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
twoLineListItem = (View) inflater.inflate(com.akscorp.blueboard.R.layout.all_group_listview_space, null);
} else {
twoLineListItem = (View) convertView;
}
TextView tv = (TextView) twoLineListItem.findViewById(com.akscorp.blueboard.R.id.group_name);
return twoLineListItem;
}
}
У вас неверный шаблон адаптера. Он должен наследоваться как выше. Выше и приведен шаблон адаптера
В вашем случае должно выглядеть примерно так
public class MyAdapter extends BaseAdapter {
private List<MyList> list;
public MyAdapter (Context context, List<MyList> list) {
this.list = list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.list_layout,
parent, false);
TextView textView1 = (TextView) convertView.findViewById(R.id.textView1);
TextView textView2 = (TextView) convertView.findViewById(R.id.textView2);
TextView textView3 = (TextView) convertView.findViewById(R.id.textView3);
TextView textView4 = (TextView) convertView.findViewById(R.id.textView4);
MyList myList = list.get(position);
textView1.setText(myList.getA1().toString());
textView2.setText(myList.getA2().toString());
textView3.setText(myList.getA3().toString());
textView4.setText(myList.getA3().toString());
return convertView;
}
}
Ну и вызывать можно так
listView.setAdapter(new MyAdapter(context));
Как изменить выделенный пункт меню в Navigation Drawer из его Фрагментов?
Пытаюсь рисовать линию с помощью SpriteBatch Беру картинку размером 1х1, растягиваю её до нужных размеров и отрисовываю Таким способом могу рисовать...
Есть два класса Form и CheckedВ классе Form есть Label и кнопка