gpt4 book ai didi

java - 如何通过自定义适配器将项目的 ArrayList 填充到 ListView?

转载 作者:行者123 更新时间:2023-12-02 10:03:43 25 4
gpt4 key购买 nike

我有一个项目数组列表,每个项目包含 2 个字符串和 1 个按钮。当我使用 List 来存储项目时,效果很好。当我更改为 ArrayList 来存储项目后,模拟器显示一个空屏幕。

主要 Activity :

    public class MainActivity extends AppCompatActivity {


public void mainlist(){
ArrayList<ListItem> items = new ArrayList<ListItem>();
for(int i = 0; i < items.size(); i++) {
int num = i + 1;
ListItem l = new ListItem("Item " + num, "sub item " + num);
items.add(l);
}
ListView el=(ListView)findViewById(R.id.eventlist);
MyArrayAdapter myArrayAdapter = new MyArrayAdapter(this, items);
el.setAdapter(myArrayAdapter);
myArrayAdapter.notifyDataSetChanged();
}


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mainlist();
}
}

适配器:

    public class MyArrayAdapter extends ArrayAdapter<ListItem> {
private ArrayList<ListItem> items;
private Context context;

public MyArrayAdapter(Context context, ArrayList<ListItem> items) {
super(context, 0, items);
this.items = items;
this.context = context;
}

@Override
public View getView(int position, View convertView, ViewGroup parent){
ListItem item = items.get(position);

if(convertView==null) {
convertView = LayoutInflater.from(context).inflate(R.layout.listitem, parent, false);
}
TextView itemView = (TextView)convertView.findViewById(R.id.item);
TextView subItemView = (TextView)convertView.findViewById(R.id.sub_item);

itemView.setText(item.getName());
subItemView.setText(item.getDetail());

return convertView;
}
}

最佳答案

ArrayList<ListItem> items = new ArrayList<ListItem>();
for(int i = 0; i < items.size(); i++) {
int num = i + 1;
ListItem l = new ListItem("Item " + num, "sub item " + num);
items.add(l);
}

您正在实例化一个新的ArrayList,它以空开头,然后尝试迭代空列表,并且您的 for 循环将不会运行。

如果您只想要数字列表,请尝试以下操作:

ArrayList<ListItem> items = new ArrayList<ListItem>();
for(int i = 0; i < 100; i++) {
int num = i + 1;
ListItem l = new ListItem("Item " + num, "sub item " + num);
items.add(l);
}

关于java - 如何通过自定义适配器将项目的 ArrayList 填充到 ListView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55450903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com