我正在使用自定义ListView,我需要添加一个新项目。由于需要添加很多项目,我想以最有效的方式对其进行编码,以便智能手机不会丢失大量内存。这是我的自定义ListView的代码:
class MessageActivityAdapter extends ArrayAdapter<String>
{
Context context;
String[] message;
String time;
MessageActivityAdapter(Context c, String[] message, String time)
{
super(c, R.layout.messagescreen_list_row, R.id.textView1, message);
this.context = c;
this.message = message;
this.time = time;
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row = inflater.inflate(R.layout.messagescreen_list_row, parent, false);
TextView tvMessage = (TextView) row.findViewById(R.id.textView1);
tvMessage.setText(message[position][0]);
return row;
}
}
这是我第一次加载ListView的方式:
adapter = new MessageActivityAdapter(this, values, time);
listView.setAdapter(adapter);
这是我更改其中一个项目中的文本并更新ListView:
的方法adapter.message[itemPos] = newItemText;
adapter.notifyDataSetChanged();
这就是我认为我可以向ListView添加新项目的方式。基本上我复制旧数组&#34;消息&#34;并创建一个新阵列&#34; messageNew&#34;它的大小为+1。然后我使用&#34; messageNew&#34;作为我的MessageActivityAdapter中的新数组并更新适配器。问题是:复制和创建新阵列会占用大量内存。为什么我不使用ArrayList?因为稍后我会将数组更改为多维数组,并且多维数组列表不存在。
String[] messageNew = getNewMessageArray();
adapter.message = messageNew;
adapter.notifyDataSetChanged();
我也不确定是否更改了&#34;消息&#34;数组和使用notifyDataSetChanged()方法是最好的方法......