如何使用列表视图实现自定义适配器?
How to implement a custom adapter with listview?
您好,当我需要在列表视图中解析数组时,我正在使用 android 应用程序。我为此创建了一个自定义适配器,但我在这里遗漏了一些东西。
public class IndustryAdapter extends ArrayAdapter<Industry> {
Context context;
int resource;
public IndustryAdapter(Context context, ArrayList<Industry> industries) {
super(context, industries);
}
@Override
public View getView(View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(android.R.layout.simple_list_item_1, parent, false);
}
TextView tvName = (TextView)convertView.findViewById(R.id.tvName);
TextView tvDescription = (TextView)convertView.findViewById(R.id.tvDescription);
return convertView;
}
}
On the super(context, industries) is showing an error for industries:
required: 'int'
error: incompatible types: ArrayList<Industry> cannot be converted to int
使用基本适配器为您的列表创建自定义适配器
class CustomAdapter extends BaseAdapter {
private ArrayList<Industry> industries;
private Context context;
public CustomAdapter(ArrayList<Industry> industries, Context context) {
this.industries = industries;
this.context = context;
}
@Override
public int getCount() {
return industries.size();
}
@Override
public Object getItem(int position) {
return industries.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.your_layout, parent, false);
}
TextView tvName = (TextView)convertView.findViewById(R.id.tvName);
TextView tvDescription = (TextView)convertView.findViewById(R.id.tvDescription);
return convertView;
}
}
您应该只更改您的超级构造函数调用。因为它接收你要膨胀的布局资源。像这样:
public IndustryAdapter(Context context, ArrayList<Industry> industries) {
super(context, android.R.layout.simple_list_item_1);
}
您好,当我需要在列表视图中解析数组时,我正在使用 android 应用程序。我为此创建了一个自定义适配器,但我在这里遗漏了一些东西。
public class IndustryAdapter extends ArrayAdapter<Industry> {
Context context;
int resource;
public IndustryAdapter(Context context, ArrayList<Industry> industries) {
super(context, industries);
}
@Override
public View getView(View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(android.R.layout.simple_list_item_1, parent, false);
}
TextView tvName = (TextView)convertView.findViewById(R.id.tvName);
TextView tvDescription = (TextView)convertView.findViewById(R.id.tvDescription);
return convertView;
}
}
On the super(context, industries) is showing an error for industries:
required: 'int'
error: incompatible types: ArrayList<Industry> cannot be converted to int
使用基本适配器为您的列表创建自定义适配器
class CustomAdapter extends BaseAdapter {
private ArrayList<Industry> industries;
private Context context;
public CustomAdapter(ArrayList<Industry> industries, Context context) {
this.industries = industries;
this.context = context;
}
@Override
public int getCount() {
return industries.size();
}
@Override
public Object getItem(int position) {
return industries.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.your_layout, parent, false);
}
TextView tvName = (TextView)convertView.findViewById(R.id.tvName);
TextView tvDescription = (TextView)convertView.findViewById(R.id.tvDescription);
return convertView;
}
}
您应该只更改您的超级构造函数调用。因为它接收你要膨胀的布局资源。像这样:
public IndustryAdapter(Context context, ArrayList<Industry> industries) {
super(context, android.R.layout.simple_list_item_1);
}