Android 拖放后保存ListView的内容

Android 拖放后保存ListView的内容,android,android-listview,Android,Android Listview,最初,我有一个简单的ListView活动,它由几个公式组成,顶部还有一个按钮。每当我单击该按钮时,它会将我带到另一个活动,在中,我正在拖放ListView的内容。此活动还包括一个按钮,每当我单击此按钮时,我在拖放活动中更改的内容顺序必须保存在我的初始活动中。如何将我在拖放活动中更改的ListView的内容保存到我的初始活动中活动 代码:我的初始活动和下一个活动是拖放 public class FormulaActivity extends Activity implements OnCli

最初,我有一个简单的ListView活动,它由几个公式组成,顶部还有一个按钮。每当我单击该按钮时,它会将我带到另一个活动,在中,我正在拖放ListView的内容。此活动还包括一个按钮,每当我单击此按钮时,我在拖放活动中更改的内容顺序必须保存在我的初始活动中。如何将我在拖放活动中更改的ListView的内容保存到我的初始活动中活动

代码:我的初始活动和下一个活动是拖放

   public class FormulaActivity extends Activity implements OnClickListener {

private ListView listview;
private ArrayList<ListContents> mListItem;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main1);
    ImageButton btn=(ImageButton)findViewById(R.id.imageButton00);
    btn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent i=new Intent(FormulaActivity.this,DragNDropListActivity.class);
            startActivity(i);


        }
    });
    listview = (ListView) findViewById(R.id.list_view);
    mListItem = ListContents.getItems();
    listview.setAdapter(new ListAdapter(FormulaActivity.this, R.id.list_view,
            mListItem));

}

@Override
public void onClick(View v) {

}

// ***ListAdapter***
private class ListAdapter extends ArrayAdapter<ListContents> { 
    private ArrayList<ListContents> mList; 
    public ListAdapter(Context context, int textViewResourceId,
            ArrayList<ListContents> list) { 
        super(context, textViewResourceId, list);
        this.mList = list;

    }

    public View getView(int position, View convertView, ViewGroup parent) {
        View view = convertView;
        try {
            if (view == null) {
                LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                view = vi.inflate(R.layout.list, null); 
            }
            final ListContents listItem = mList.get(position); 
            if (listItem != null) {
                // setting list_item views
                ((TextView) view.findViewById(R.id.tv_name))
                        .setText(listItem.getName());
                view.setOnClickListener(new OnClickListener() {


        public void onClick(View arg0) { // --clickOnListItem
                        Intent myIntent = new Intent(FormulaActivity.this,
                                Activity2.class);
                        myIntent.putExtra("NAME", listItem.getName());
                        startActivity(myIntent);
                        //finish();
                    }
                });
            }
        } catch (Exception e) {
            Log.i(FormulaActivity.ListAdapter.class.toString(), e.getMessage());
        }
        return view;
    }
}
公共类FormulaActivity扩展活动实现OnClickListener{
私有列表视图列表视图;
私人ArrayList mListItem;
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main1);
ImageButton btn=(ImageButton)findViewById(R.id.imageButton00);
btn.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
意向i=新意向(FormulaActivity.this,DragndLopListActivity.class);
星触觉(i);
}
});
listview=(listview)findViewById(R.id.list\u视图);
mListItem=ListContents.getItems();
setAdapter(新的ListAdapter(FormulaActivity.this,R.id.list\u视图,
姆利斯蒂姆);
}
@凌驾
公共void onClick(视图v){
}
//***ListAdapter***
私有类ListAdapter扩展了ArrayAdapter{
私有数组列表;
公共ListAdapter(上下文上下文,int textViewResourceId,
数组列表){
super(上下文、textViewResourceId、列表);
this.mList=列表;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
视图=转换视图;
试一试{
如果(视图==null){
LayoutInflater vi=(LayoutInflater)getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);
视图=vi.充气(R.布局.列表,空);
}
最终列表内容listItem=mList.get(位置);
如果(listItem!=null){
//设置列表项目视图
((TextView)view.findviewbyd(R.id.tv_name))
.setText(listItem.getName());
view.setOnClickListener(新的OnClickListener(){
单击(视图arg0){/--clickOnListItem时公共无效
Intent myIntent=新的Intent(FormulaActivity.this,
活动(2.课堂);
myIntent.putExtra(“NAME”,listItem.getName());
星触觉(myIntent);
//完成();
}
});
}
}捕获(例外e){
Log.i(FormulaActivity.ListAdapter.class.toString(),e.getMessage());
}
返回视图;
}
}
}


公共类DragndLopListActivity扩展了ListActivity{
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.dragndroplistview);
按钮mbtn=(按钮)findViewById(R.id.button12);
mbtn.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
意向i=新意向(DragNDropListActivity.this,FormulaActivity.class);
星触觉(i);
完成();
}
});
ArrayList内容=新的ArrayList(mListContent.length);
对于(int i=0;ipublic class DragNDropListActivity extends ListActivity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.dragndroplistview);
    Button mbtn=(Button)findViewById(R.id.button12);
    mbtn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
        Intent i=new Intent(DragNDropListActivity.this,FormulaActivity.class);
        startActivity(i);
        finish();
        }
    });
    ArrayList<String> content = new ArrayList<String>(mListContent.length);
    for (int i=0; i < mListContent.length; i++) {
        content.add(mListContent[i]);
    }

    setListAdapter(new DragNDropAdapter(this, new int[]{R.layout.dragitem}, new int[]{R.id.TextView01}, content));//new DragNDropAdapter(this,content)
    ListView listView = getListView();

    if (listView instanceof DragNDropListView) {
        ((DragNDropListView) listView).setDropListener(mDropListener);
        ((DragNDropListView) listView).setRemoveListener(mRemoveListener);
        ((DragNDropListView) listView).setDragListener(mDragListener);
    }
}

private DropListener mDropListener = 
    new DropListener() {
    public void onDrop(int from, int to) {
        ListAdapter adapter = getListAdapter();
        if (adapter instanceof DragNDropAdapter) {
            ((DragNDropAdapter)adapter).onDrop(from, to);
            getListView().invalidateViews();
        }
    }
};

private RemoveListener mRemoveListener =
    new RemoveListener() {
    public void onRemove(int which) {
        ListAdapter adapter = getListAdapter();
        if (adapter instanceof DragNDropAdapter) {
            ((DragNDropAdapter)adapter).onRemove(which);
            getListView().invalidateViews();
        }
    }
};

private DragListener mDragListener =
    new DragListener() {

    int backgroundColor = 0xe0103000;

        public void onDrag(int x, int y, ListView listView) {
            // TODO Auto-generated method stub
        }

        public void onStartDrag(View itemView) {
            itemView.setVisibility(View.INVISIBLE);
            itemView.setBackgroundColor(backgroundColor);
            ImageView iv = (ImageView)itemView.findViewById(R.id.ImageView01);
            if (iv != null) iv.setVisibility(View.VISIBLE);
        }

        public void onStopDrag(View itemView) {
            itemView.setVisibility(View.VISIBLE);
            itemView.setBackgroundColor(backgroundColor);
            ImageView iv = (ImageView)itemView.findViewById(R.id.ImageView01);
            if (iv != null) iv.setVisibility(View.VISIBLE);
        }

};

private static String[] mListContent={"BMI", "Infuusberekening: druppels per minuut", "Infuusberekening: resterende tijd","Injecteren: IE-aanduiding", "Injecteren: mg/ml-aanduiding", "Injecteren: %-aanduiding", 
                                    "Lichaamsoppervlakte", "Medicatieberekening voor gewicht",
                                    "Oplossen: Hoeveelheid percentage",
                                    "Oplossen: Hoeveelheid promillage",
                                    "Oplossen: Percentage in oplossing",
                                    "Oplossen: Promillage in oplossing",
                                    "PCA-pomp",
                                    "Procenten: delen",
                                    "Procenten: percentage",
                                    "Promillage: delen",
                                    "Promillage: percentage",
                                    "Spuitenpomp",
                                    "Verdunnen",
                                    "Voedingspomp: ml per uur",
                                    "Voedingspomp: resterende tijd",
                                    "Zuurstofberekening"};
public static String[] mNewPositions; 
    private DropListener mDropListener = 
        new DropListener() {
    public void onDrop(int from, int to) {
        ListAdapter adapter = getListAdapter();
        if (adapter instanceof DragNDropAdapter) {
            ((DragNDropAdapter)adapter).onDrop(from, to);
            getListView().invalidateViews();

            mNewPositions = new String[adapter.getCount()]; //Initialize your new items storage

                for(int i=0; i < adapter.getCount(); i++) {
                    //Implement here your logic for save positions
                    mNewPositions[i] = adapter.getItem(i).toString();
                }               
        }
    }
};