使用 ArrayAdapter 在 Android 中创建列表
Using ArrayAdapter to create a list in Android
我是这方面的新手,对事情如何运作的解释真的很有用。
所以我有这个class
static class ListAdapter extends ArrayAdapter<String>{
List<String> elements;
Context context;
public ListAdapter(Context context, List<String> elements) {
super(context, 0, elements);
this.context = context;
this.elements = elements;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.list_item_ex, null, false);
}
TextView tvTitle = convertView.findViewById(R.id.tv_title);
TextView tvDescription = convertView.findViewById(R.id.tv_description);
ImageView ivExample = convertView.findViewById(R.id.iv_image);
ivExample.setImageResource(R.drawable.offer_1);
tvTitle.setText(elements.get(position));
tvDescription.setText(String.valueOf(position));
return convertView;
}
}
我在 MainActivity 中添加了一些元素到列表中以查看它是如何工作的,但我很难理解如何添加元素,每个元素都有不同的图片、描述等。
为此,您必须创建一个带有自定义 class 的 ArrayAdapter:
以下是您必须遵循的步骤:
创建class自定义
public class Custom {
int image;
String title;
String description;
//constructeur
//getters and setters }
创建适配器扩展 ArrayAdapter
public class CustomArrayAdapter extends ArrayAdapter<Custom> {
ArrayList<Custom> list;
public CustomArrayAdapter(Context context, ArrayList<Custom> list) {
super(context, R.layout.list_item_ex, list);this.list = list;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Custom custom=getItem(position);
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_item_ex, parent, false);
}
TextView tvTitle = convertView.findViewById(R.id.tv_title);
TextView tvDescription = convertView.findViewById(R.id.tv_description);
ImageView ivExample = convertView.findViewById(R.id.iv_image);
ivExample.setImageResource(custom.getImage());
tvTitle.setText(custom.getTitle());
tvDescription.setText(custom.getDescription());
return convertView;
}
}
填充一个ArrayList然后listView.setAdapter(customArrayAdapter);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView listView=(ListView) findViewById(R.id.listView) ;
ArrayList<Custom> list=new ArrayList<>();
list.add(new Custom(R.mipmap.ic_launcher,"title","desc"));
CustomArrayAdapter customArrayAdapter=new CustomArrayAdapter(this,listView);
listView.setAdapter(customArrayAdapter);}
我是这方面的新手,对事情如何运作的解释真的很有用。
所以我有这个class
static class ListAdapter extends ArrayAdapter<String>{
List<String> elements;
Context context;
public ListAdapter(Context context, List<String> elements) {
super(context, 0, elements);
this.context = context;
this.elements = elements;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.list_item_ex, null, false);
}
TextView tvTitle = convertView.findViewById(R.id.tv_title);
TextView tvDescription = convertView.findViewById(R.id.tv_description);
ImageView ivExample = convertView.findViewById(R.id.iv_image);
ivExample.setImageResource(R.drawable.offer_1);
tvTitle.setText(elements.get(position));
tvDescription.setText(String.valueOf(position));
return convertView;
}
}
我在 MainActivity 中添加了一些元素到列表中以查看它是如何工作的,但我很难理解如何添加元素,每个元素都有不同的图片、描述等。
为此,您必须创建一个带有自定义 class 的 ArrayAdapter: 以下是您必须遵循的步骤:
创建class自定义
public class Custom { int image; String title; String description; //constructeur //getters and setters }
创建适配器扩展 ArrayAdapter
public class CustomArrayAdapter extends ArrayAdapter<Custom> { ArrayList<Custom> list; public CustomArrayAdapter(Context context, ArrayList<Custom> list) { super(context, R.layout.list_item_ex, list);this.list = list; } @Override public View getView(int position, View convertView, ViewGroup parent) { Custom custom=getItem(position); if (convertView == null) { convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_item_ex, parent, false); } TextView tvTitle = convertView.findViewById(R.id.tv_title); TextView tvDescription = convertView.findViewById(R.id.tv_description); ImageView ivExample = convertView.findViewById(R.id.iv_image); ivExample.setImageResource(custom.getImage()); tvTitle.setText(custom.getTitle()); tvDescription.setText(custom.getDescription()); return convertView; }
}
填充一个ArrayList然后listView.setAdapter(customArrayAdapter);
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView listView=(ListView) findViewById(R.id.listView) ; ArrayList<Custom> list=new ArrayList<>(); list.add(new Custom(R.mipmap.ic_launcher,"title","desc")); CustomArrayAdapter customArrayAdapter=new CustomArrayAdapter(this,listView); listView.setAdapter(customArrayAdapter);}