Android App Custom ListView:以最有效的方式添加新项目

时间:2014-08-21 15:33:23

标签: android arrays listview

我正在使用自定义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()方法是最好的方法......

0 个答案:

没有答案