我有一个用于异构项目列表的适配器,所有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;
}
}
动作是一个抽象类,因此actions.get(position).getViewId()
我得到了该动作的适当布局,每个人都有不同的字段(文本视图、编辑文本等)。
我让用户动态添加/删除操作,并且我希望在屏幕旋转等上保留列表。我发现我可以android:configChanges="orientation|screenSize"
在清单中添加,但文档说它应该是最后的手段。
最好的方法是什么?我的意思是,我应该将该标签保留在清单中还是更好,即在数据库中绑定列表?在后一种情况下,我该如何处理具有不同字段的操作?
而且,永久保存列表的更强大的方法是什么?例如,我希望用户可以将此类操作列表保存为模板以供将来使用
如果您认为我可以以更好的方式做某事(例如扩展 BaseAdapter 而不是 ArrayAdapter),请解释原因,我对更改持开放态度