保存异构列表视图的更好解决方案是什么?

时间:2013-03-17 13:07:39

标签: android listview adapter heterogeneous

我有一个适配器,用于列出异构项目,所有Action类型。

ActionAdapter.java

import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

public class ActionAdapter extends ArrayAdapter<Action> {
    Context context; 
    int layoutResourceId;    
    ArrayList<Action> actions = null;

    public ActionAdapter(Context context, int layoutResourceId, ArrayList<Action> actions) {
        super(context, layoutResourceId, actions);
        this.layoutResourceId = layoutResourceId;
        this.context = context;
        this.actions = actions;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View row = convertView;
        ActionHolder holder = null;

        if(row == null)
        {
            LayoutInflater inflater = ((Activity)context).getLayoutInflater();
            row = inflater.inflate(actions.get(position).getViewId(), parent, false);

            holder = new ActionHolder();
            holder.title = (TextView)row.findViewById(R.id.action_title);

            row.setTag(holder);
        }
        else
        {
            holder = (ActionHolder)row.getTag();
        }

        Action action = actions.get(position);
        holder.title.setText(action.getTitle());

        return row;
    }

    static class ActionHolder
    {
        TextView title;
    }
}

Action是一个抽象类,所以使用actions.get(position).getViewId()我得到了该操作的适当布局,每个人都有不同的字段(textviews,edittexts等)。

我让用户动态添加/删除操作,我想在屏幕旋转等方面保留列表。我发现我可以在清单中添加android:configChanges="orientation|screenSize",但documentation表示它应该是不得已。

最好的方法是什么?我的意思是,我应该将该标记保留在清单中还是更好,即绑定数据库中的列表?在后一种情况下,我如何处理具有不同字段的操作?

而且,保存列表永久的更健壮的方法是什么?例如,我希望用户可以将此类操作列表保存为模板以供将来使用

如果您认为我可以更好地做某事(例如扩展BaseAdapter而不是ArrayAdapter),解释原因,我对改变持开放态度

0 个答案:

没有答案