在android中从目录到列表视图读取项目

在android中从目录到列表视图读取项目,android,listview,sd-card,Android,Listview,Sd Card,我正在制作一个android应用程序,它需要将sd卡上特定目录中的所有项目显示在listview上。我看了好几本教程,但似乎都没有给我任何帮助。我已设法从sd卡和listview中添加和删除内容。但是我需要在listview上显示目录中的项目(文件)。我使用的是动态列表视图。请帮忙,谢谢你!这是我目前正在使用的代码,我需要阅读onCreate方法中的项目 public class NotesActivity extends ListActivity implements OnClickListe

我正在制作一个android应用程序,它需要将sd卡上特定目录中的所有项目显示在listview上。我看了好几本教程,但似乎都没有给我任何帮助。我已设法从sd卡和listview中添加和删除内容。但是我需要在listview上显示目录中的项目(文件)。我使用的是动态列表视图。请帮忙,谢谢你!这是我目前正在使用的代码,我需要阅读onCreate方法中的项目

public class NotesActivity extends ListActivity implements OnClickListener {
/** Called when the activity is first created. */
List<String> myList = new ArrayList<String>();
EditText AddItemToListViewEditText;
Button AddItemToListView, AddItemToListViewButton, CancelButton, DeleteButton,CancelButton2, DeleteAllButton;
LinearLayout AddItemToListViewLinearLayout, DeleteItemFromListViewLinearLayout, DeleteAllItemsFromListViewLinearLayout;
public int DeleteIndexNumber;
public String NameOfSaveItemToSdCard = "";
public String NameOfDeleteItemFromSdCard = "";
public int DeleteIndexNumber2;
  static final String[] COUNTRIES = new String[] {
      "Matte på A1 med Ole", "Engelsk på klasserommet", "Film på A1 etter friminuttet"
      };
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.notes);
    setListAdapter((ListAdapter) new ArrayAdapter<String>(this, R.layout.list_item, COUNTRIES));
    setListAdapter((ListAdapter) new ArrayAdapter<String>(this, R.layout.list_item, myList));

    ListView lv = getListView();
    lv.setTextFilterEnabled(true);

    lv.setOnItemClickListener(new OnItemClickListener() {
      public void onItemClick(AdapterView<?> parent, View view,
          int position, long id) {
        // When clicked, show a toast with the TextView text
        Toast.makeText(getApplicationContext(), "Note: " + ((TextView) view).getText(),
            Toast.LENGTH_SHORT).show();
        DeleteIndexNumber = position;
        DeleteIndexNumber2 = position;
        NameOfDeleteItemFromSdCard = myList.get(position);
        DeleteItemFromListViewLinearLayout = (LinearLayout)findViewById(R.id.DeleteItemFromListViewLinearLayout);
        DeleteItemFromListViewLinearLayout.setVisibility(View.VISIBLE);
  }
    });
  }
@Override
public boolean onCreateOptionsMenu(Menu meny) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.listviewmenubuttons, meny);
    return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch(item.getItemId()) {
    case R.id.AddItemToListView:
        AddItemToListViewButton = (Button)findViewById(R.id.AddItemToListViewButton);
        CancelButton = (Button)findViewById(R.id.CancelButton);
        DeleteButton = (Button)findViewById(R.id.DeleteButton);
        CancelButton.setOnClickListener(this);
        DeleteButton.setOnClickListener(this);
        AddItemToListViewLinearLayout = (LinearLayout)findViewById(R.id.AddItemToListViewLinearLayout);
        AddItemToListViewButton.setOnClickListener(this);
        AddItemToListViewLinearLayout.setVisibility(View.VISIBLE);
        break;
    case R.id.DeleteAllNotes:
        DeleteAllItemsFromListViewLinearLayout = (LinearLayout)findViewById(R.id.DeleteAllItemsFromListViewLinearLayout);
        DeleteAllItemsFromListViewLinearLayout.setVisibility(View.VISIBLE);
        CancelButton2 = (Button)findViewById(R.id.CancelButton2);
        DeleteAllButton = (Button)findViewById(R.id.DeleteAllButton);
        CancelButton2.setOnClickListener(this);
        DeleteAllButton.setOnClickListener(this);
        break;
        }
    return true;
}
public void onClick(View src) {
    switch(src.getId()) {
    case R.id.AddItemToListViewButton:
        AddItemToListViewEditText = (EditText)findViewById(R.id.AddItemToListViewEditText);
        myList.add(AddItemToListViewEditText.getText().toString());
        NameOfSaveItemToSdCard = AddItemToListViewEditText.getText().toString();
        ((ArrayAdapter)getListView().getAdapter()).notifyDataSetChanged(); 
        AddItemToListViewEditText.setText("");
        AddItemToListViewEditText.clearFocus();
        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.toggleSoftInput (InputMethodManager.SHOW_FORCED, InputMethodManager.RESULT_HIDDEN);
        imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
        AddItemToListViewLinearLayout.setVisibility(View.GONE);
        //Check if directory exists
        checkIfDirectoryExist();
        break;
    case R.id.CancelButton:
        DeleteItemFromListViewLinearLayout = (LinearLayout)findViewById(R.id.DeleteItemFromListViewLinearLayout);
        DeleteItemFromListViewLinearLayout.setVisibility(View.INVISIBLE);
        break;
    case R.id.DeleteButton:
        myList.remove(DeleteIndexNumber);
        ((ArrayAdapter)getListView().getAdapter()).notifyDataSetChanged();
        File f = new File(Environment.getExternalStorageDirectory() + "/SchoolAppNotes/" + NameOfDeleteItemFromSdCard);
        if(f.exists()) {
            boolean deleted = f.delete();
        }
        DeleteItemFromListViewLinearLayout = (LinearLayout)findViewById(R.id.DeleteItemFromListViewLinearLayout);
        DeleteItemFromListViewLinearLayout.setVisibility(View.INVISIBLE);
        break;
    case R.id.DeleteAllButton:
        myList.removeAll(myList);
        ((ArrayAdapter)getListView().getAdapter()).notifyDataSetChanged();
        DeleteAllItemsFromListViewLinearLayout = (LinearLayout)findViewById(R.id.DeleteAllItemsFromListViewLinearLayout);
        DeleteAllItemsFromListViewLinearLayout.setVisibility(View.INVISIBLE);
        break;
    case R.id.CancelButton2:
        DeleteAllItemsFromListViewLinearLayout = (LinearLayout)findViewById(R.id.DeleteAllItemsFromListViewLinearLayout);
        DeleteAllItemsFromListViewLinearLayout.setVisibility(View.INVISIBLE);
        break;
    }
}
private void checkIfDirectoryExist() {
    // TODO Auto-generated method stub
    File f = new File(Environment.getExternalStorageDirectory() + "/SchoolAppNotes");
    if(f.exists()) {
        try {
            OutputStream output = new FileOutputStream(Environment.getExternalStorageDirectory()
                     + "/SchoolAppNotes/" + NameOfSaveItemToSdCard);
            Toast.makeText(getApplicationContext(), "File created:-)",
                    Toast.LENGTH_SHORT).show();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            Toast.makeText(getApplicationContext(), "We failed to create the file",
                    Toast.LENGTH_SHORT).show();
            e.printStackTrace();
        }
    }
    else {
        //Create directory
        File folder = new File(Environment.getExternalStorageDirectory() + "/SchoolAppNotes");
        boolean success = false;
        if(!folder.exists())
        {
            success = folder.mkdir();
        }         
        if (!success) 
        { 
            // Do something on success
//Writing file...(It doesn't work)
        }
        else 
        {
            // Do something else on failure 
        }
        checkIfDirectoryExist();
    }
}
}
公共类NotesActivity扩展ListActivity实现OnClickListener{
/**在首次创建活动时调用*/
List myList=new ArrayList();
EditText AddItemToListViewEditText;
按钮AddItemToListView、AddItemToListView按钮、CancelButton、DeleteButton、CancelButton2、DeleteAllButton;
LinearLayout AddItemToListViewLinearLayout,DeleteItemFromListViewLinearLayout,DeleteAllItems FromListViewLinearLayout;
公共int DeleteIndexNumber;
公共字符串名称saveItemToSDCard=“”;
公共字符串名称deletItemFromSDcard=“”;
公共int DeleteIndexNumber2;
静态最终字符串[]国家/地区=新字符串[]{
“无光påA1 med Ole”、“恩格尔斯克påKlasseromet”、“电影påA1 TETTER FRIMENTET”
};
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.notes);
setListAdapter((ListAdapter)新的ArrayAdapter(此,R.layout.list_项,国家/地区));
setListAdapter((ListAdapter)新的ArrayAdapter(this,R.layout.list_项,myList));
ListView lv=getListView();
lv.setTextFilterEnabled(真);
lv.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
//单击后,显示带有文本视图文本的祝酒词
Toast.makeText(getApplicationContext(),“注意:”+((TextView)视图).getText(),
吐司。长度(短)。show();
DeleteIndexNumber=位置;
DeleteIndexNumber2=位置;
NameOfDeleteItemFromSdCard=myList.get(位置);
DeleteItemFromListViewLinearLayout=(LinearLayout)findViewById(R.id.DeleteItemFromListViewLinearLayout);
DeleteItemFromListViewLinearLayout.setVisibility(View.VISIBLE);
}
});
}
@凌驾
公共布尔onCreateOptions菜单(菜单菜单菜单){
MenuInflater充气机=getMenuInflater();
充气器。充气(R.menu.listviewmenubuttons,meny);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
开关(item.getItemId()){
案例R.id.AddItemToListView:
AddItemToListViewButton=(按钮)findViewById(R.id.AddItemToListViewButton);
CancelButton=(按钮)findViewById(R.id.CancelButton);
DeleteButton=(Button)findViewById(R.id.DeleteButton);
CancelButton.setOnClickListener(此);
DeleteButton.setOnClickListener(此);
AddItemToListViewLinearLayout=(LinearLayout)findViewById(R.id.AddItemToListViewLinearLayout);
AddItemToListViewButton.setOnClickListener(此);
AddItemToListViewLinearLayout.setVisibility(View.VISIBLE);
打破
案例R.id.DeleteAllNotes:
DeleteAllItemsFromListViewLinearLayout=(LinearLayout)findViewById(R.id.DeleteAllItemsFromListViewLinearLayout);
DeleteAllItemsFromListViewLinearLayout.setVisibility(View.VISIBLE);
CancelButton2=(按钮)findViewById(R.id.CancelButton2);
DeleteAllButton=(Button)findViewById(R.id.DeleteAllButton);
CancelButton2.setOnClickListener(此);
DeleteAllButton.setOnClickListener(此);
打破
}
返回true;
}
公共void onClick(视图src){
开关(src.getId()){
案例R.id.AddItemToListView按钮:
AddItemToListViewEditText=(EditText)findViewById(R.id.AddItemToListViewEditText);
添加(AddItemToListViewEditText.getText().toString());
NameOfSaveItemToSdCard=AddItemToListViewEditText.getText().toString();
((ArrayAdapter)getListView().getAdapter()).notifyDataSetChanged();
AddItemToListViewEditText.setText(“”);
AddItemToListViewEditText.clearFocus();
InputMethodManager imm=(InputMethodManager)getSystemService(Context.INPUT\u方法\u服务);
imm.toggleSoftInput(InputMethodManager.SHOW\u强制,InputMethodManager.RESULT\u隐藏);
imm.toggleSoftInput(InputMethodManager.SHOW_强制,0);
AddItemToListViewLinearLayout.setVisibility(View.GONE);
//检查目录是否存在
checkIfDirectoryExist();
打破
案例R.id.Cancel按钮:
DeleteItemFromListViewLinearLayout=(LinearLayout)findViewById(R.id.DeleteItemFromListViewLinearLayout);
DeleteItemFromListViewLinearLayout.setVisibility(View.INVISIBLE);
打破
案例R.id.delete按钮:
myList.remove(删除索引编号);
((ArrayAdapter)getListView().getAdapter()).notifyDataSetChanged();
文件f=新文件(Environment.getExternalStorageDirectory()+“/SchoolAppNotes/”+NameOfDeleteItemFromSdCard);
如果(f.exists()){
布尔删除=f.delete();
}
DeleteItemFromListViewLinearLayout=(LinearLayout)findViewById(R.id.DeleteItemFromListViewLinearLayout);
DeleteItemFromListViewLinearLayout.setVisibility(View.INVISIBLE);
打破
案例R.id.DeleteAllButton:
myList.removeAll(myList);
((ArrayAdapter)getListView().getAdapter()).notifyDataSetChanged();
DeleteAllItemsFromListViewLinearLayout=(LinearLayout)findViewById(R.id.DeleteAllItemsFromListViewLinearLayout);
DeleteAllItemsFromListViewLinearLayout.setVisibility(View.INVISIBLE);
打破
案例R.id.2:
DeleteAllItemsFromListViewLinearLayout=(LinearLayout)findViewById(R.id.DeleteAllItemsFromListViewLinearLayout);
DeleteAllItemsFromListViewLinearLayout.setVisibility(View.INVI
File mFile = new File(Environment.getExternalStorageDirectory() + "yourDirectory");
myList = mFile.list();
myList = Arrays.asList(mFile.list());