2016-09-01 1 views
0

私は項目の位置をListViewに移動しようとしていますが、リストの1行上に移動するボタンを押しています。私は他の回答を探しましたが、ListViewにはArrayList鉱山からfileList()リストビューを上に移動する

私はどういうわけかfileList()でファイルをソートする必要がありますか?または自分の位置を変更するのに十分なArrayListを使用していますか?

私はアイテムの位置、私はあなたがアダプターを使用してリストを示すためにString[] SavedFiles;を使用している項目の位置

OnItemClickListener getFileEditContent = new OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     // Get item's file name according to position 
     String clickedFile = (String)parent.getItemAtPosition(position); 
     stringArrayList.add(clickedFile) 

     // Get item position 
     intArrayList.add(position); 

    } 
}; 

答えて

0

を得る方法私ListView

String[] SavedFiles; 
String dataDr; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_address); 

    dataDr = getApplicationInfo().dataDir; 
    showDirFile(dataDr); 
} 

void showDirFile(String dirpth) 
{ 
    String path = dirpth+"/files"; 
    Log.d("Files", "Path: " + path); 
    File f = new File(path); 
    File file[] = f.listFiles(); 
    Log.d("Files", "Size: "+ file.length); 

    SavedFiles = new String[file.length]; 
    for (int i=0; i < file.length; i++) 
    { 
     Log.d("Files", "FileName:" + file[i].getName()); 

     SavedFiles[i] = file[i].getName(); 
    } 

    ArrayAdapter<String> adapter 
      = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, 
      SavedFiles); 
    listView.setAdapter(adapter); 
} 

を読み込む方法

を取得するためにArrayListを使用。

項目をクリックすると、配列項目を交換してアダプタに通知するための書き込みロジックを移動します。

あなたのロジックは、トップアイテムを現在のものに、現在のものをトップワンにします。

希望すると、これが役立ちます。

0

私は

Collections collections; 

void positionChange(){ 

    //to store arrays into ArrayList 
    List<String> newList = new ArrayList<String>(Arrays.asList(myDataFiles)); 

    //to get the item's position @ get the first item in array if multiple arrays exist 
    String currentPos = String.valueOf(intArrayList.get(0)); 
    int oldPos = Integer.valueOf(currentPos); 
    int newPos = oldPos-1; 

    //Swap position @ move up list 
    collections.swap(newList, oldPos, newPos); 

    //store ArrayList data into arrays 
    myDataFiles = newList.toArray(myDataFiles); 

    intArrayList.clear(); 

    adapter.notifyDataSetChanged(); 
} 

Collections.swap方法に

を使用して、それを自分自身を解決するために管理これは、状態を保存しません、私たちの選択した項目を上に移動しますが、します。 ListViewに表示されているアイテムの位置が、アプリケーション終了時の状態に戻ります。

関連する問題