2012-02-21 31 views
2

私はListViewですが、アイテムを並べ替えることができますが、アプリを終了してもう一度起動するたびに、注文はデフォルトに戻ります。私は誰かが私に答えを与えることができると私はそれを行うことができる方法の少しスニペットを与えることができれば感謝します。リストビュー項目の並べ替え/並べ替えと変更の保存?

例:2つのアイテムと2つのリンクがあります。 GoogleとYahoo。私はそれにドラッグアンドドロップとArrayListを使用します。私は新しい注文をどのように保存するのか分からない限り、すべてが問題ありません。

これらのアイテムを並べ替える別の方法があるかどうかわかりません。

私はこれを行うためにCWAC-TOUCHLISTを使用します。

private static String[] items={"Google", "Yahoo"}; 

    private static String[] links={"http://google.com", "http://yahoo.com"}; 

    private IconicAdapter adapter=null; 

    private IconicAdapter1 adapter2=null; 

    ArrayList<String> array= new ArrayList<String>(Arrays.asList(items)); 

    private ArrayList<String> array2= 
     new ArrayList<String>(Arrays.asList(links)); 

    /** Called when the activity is first created. **/ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     TouchListView tlv=(TouchListView)getListView(); 
     adapter=new IconicAdapter(); 
     adapter2=new IconicAdapter1(); 
      setListAdapter(adapter); 
     setListAdapter(adapter2); 

     tlv.setOnItemClickListener(itemclick); 
     tlv.setDropListener(onDrop); 

    } 

    private TouchListView.DropListener onDrop = 
     new TouchListView.DropListener() { 
      @Override 
      public void drop(int from, int to) { 
       String item=(String) adapter.getItem(from); 

       adapter.remove(item); 
       adapter.insert(item, to); 

       String link=(String) adapter2.getItem(from); 
       adapter2.remove(link); 
       adapter2.insert(link, to); 
      } 
     }; 

    private TouchListView.OnItemClickListener itemclick = 
     new TouchListView.OnItemClickListener(){ 
      public void onItemClick(AdapterView<?> parent, View view, 
       int from, long id) { 

       String item = adapter.getItem(from); 

      Toast.makeText(getBaseContext(), "you pick: "+item, 
         Toast.LENGTH_SHORT).show(); 

       String link = adapter2.getItem(from); 
       Intent showContent = new Intent(getApplicationContext(), 
         Web.class); 
       showContent.setData(Uri.parse(link)); 
       startActivity(showContent); 
      } 
     }; 

はそれを行うには、よりスマートな方法があります:ここで

は、私が持っているどのくらいいるのですか?

答えて

2

リストをファイルまたはDBのどちらかの順序で保存する必要があります。 アプリケーションが起動すると、保存されたリストからListViewを初期化する必要があります。 &アイテムをドロップすると、変更内容を保存する必要があります。

変更する必要があるメソッド: ドロップメソッドは、既に行っていることに加えて、ファイルまたはDBに変更を保存する必要があります。 IconicAdapterコンストラクタとIconicAdapter2コンストラクタ(配列& array2)で渡す配列の代わりに、保存された配列を渡す必要があります。

ファイルやSQLite DBにデータを格納する方法は、多くの場所で読むことができます。たとえば、SQLiteのチュートリアルはhttp://www.vogella.com/articles/AndroidSQLite/article.html#android_requisitesです(ContentProviderを使用する必要がないため、最初の4つのセクションのみが関連します)。 DBを使用する場合は、項目、リンク&の順番の列を含む表を作成できます。 dropメソッドでは、fromとtoの間にあるすべての行のorder列を更新する必要があります(またはリストが大きすぎない場合は、単にすべての行を更新して順序をインデックスに設定することができます)。リストを保持する配列) DBからテーブルをロードするときは、注文列で注文する必要があります。

関連する問題