使用 ListAdapter 将项目添加到 ListView
Posted
技术标签:
【中文标题】使用 ListAdapter 将项目添加到 ListView【英文标题】:Add item to ListView using the ListAdapter 【发布时间】:2016-03-02 17:24:18 【问题描述】:大家晚上好,
我正在开发一个 android 应用程序,并且我有一个(自定义)ListView 以及一个自定义 ListAdapter。当我尝试通过在 ListAdapter 上调用 .add()
向 ListView 添加数据时,应用程序立即崩溃。我尝试将 ListAdapter 的数据类型更改为 ArrayList,但这并没有解决问题。
我的 ListAdapter 的代码:
class DeviceListAdapter extends ArrayAdapter<Device>
public DeviceListAdapter(Context context, Device[] data)
super(context, R.layout.device_row, data);
@Override
public View getView(int position, View convertView, ViewGroup parent)
LayoutInflater li = LayoutInflater.from(getContext());
View cv = li.inflate(R.layout.device_row, parent, false);
Device dataItem = getItem(position);
TextView nameTextView = (TextView)cv.findViewById(R.id.nameTextView);
//TextView statusTextView = (TextView)cv.findViewById(R.id.statusTextView);
ImageView screenImageView = (ImageView)cv.findViewById(R.id.screenImageView);
nameTextView.setText((String)dataItem.Name);
Picasso.with(getContext()).load((String)dataItem.ImageUrl).into(screenImageView);
return cv;
初始化适配器和列表视图:
Device[] data = new Device[];
arad = new DeviceListAdapter(this, data);
ListView deviceListView = (ListView) findViewById(R.id.listView);
deviceListView.setAdapter(arad);
deviceListView.setOnItemClickListener(
new AdapterView.OnItemClickListener()
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
String[] clickdata = (String[]) parent.getItemAtPosition(position);
Toast.makeText(HomeActivity.this, clickdata[0], Toast.LENGTH_LONG).show();
);
尝试向列表视图添加项目:
arad.clear();
arad.add(devices);
编辑:对代码进行了一些更改,现在使用自定义设备类而不是 Object[]
【问题讨论】:
devices
是什么?可以加代码吗?
错误是什么??????
【参考方案1】:
代替
arad.add(devices.toArray());
试试,
arad.addAll(devices.toArray());
【讨论】:
【参考方案2】:我从来没有使用过这样的适配器,我认为你应该在代码中添加名为data
的数组,然后通知适配器。
data.add("Item X");//data.addAll(devices.toArray());
data.add("Item Y");
arad.notifyDataSetChanged();
【讨论】:
以上是关于使用 ListAdapter 将项目添加到 ListView的主要内容,如果未能解决你的问题,请参考以下文章
DiffUtil 重绘 ListAdapter Kotlin 中的所有项目
在没有唯一标识符的项目上使用“ListAdapter”areItemsTheSame
将图片网址设置为listadapter以使用Picasso显示图片