1

ContextMenuユーザーが私のアイテムをタップしたときに を作成しようとしていListViewます。ただし、アイテムをタップしてもコードは何も表示されません。誰かが私のコードをチェックしてください。ありがとうございました。

public class MyD extends SherlockListFragment implements
        ActionBar.TabListener {

    private File file;
    private List<String> myList;

    private Fragment mFragment;

    private ListView DLListView;
    private ArrayAdapter<String> listAdapter;

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        getActivity().setContentView(R.layout.dl_listview);

        View empty = getActivity().findViewById(R.id.empty);
        DLListView = (ListView) getActivity().findViewById(R.id.DLListView);
        DLListView.setEmptyView(empty);

        if (!Environment.getExternalStorageState().equals(
                Environment.MEDIA_MOUNTED)) {
            Toast.makeText(getActivity(),
                    "Error! No SDCARD Found!",
                    Toast.LENGTH_LONG).show();
        } else {
            File directory = new File(Environment.getExternalStorageDirectory()
                    + File.separator + "St");
            directory.mkdirs();
        }
        DLListView = (ListView) getActivity().findViewById(R.id.DLListView);

        myList = new ArrayList<String>();

        File sdCard = Environment.getExternalStorageDirectory();
        file = new File(sdCard.getAbsolutePath() + "/St/");

        File list[] = file.listFiles();

        for (int i = 0; i < list.length; i++) {
            String fileName = list[i].getName();
            fileName = fileName.replace(".txt", "");
            myList.add(fileName);

        }

        listAdapter = new ArrayAdapter<String>(getActivity(),
                R.layout.simplerow, myList);

        DLListView.setAdapter(listAdapter);

        DLListView.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                // TODO Auto-generated method stub
                String textToPass = myList.get(position);
                Intent i = new Intent(getActivity(), ViewActivity.class);
                textToPass = textToPass.replace(textToPass + "", textToPass
                        + ".txt");
                i.putExtra("textToPass", textToPass);
                startActivity(i);
            }
        });

    DLListView.setOnItemLongClickListener(new OnItemLongClickListener() {

    @Override
    public boolean onItemLongClick(AdapterView<?> parent, View view,
            int position, long id) {
        // TODO Auto-generated method stub
        return false;
    }
});

}

    public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo)
    {
       super.onCreateContextMenu(menu, v, menuInfo);
       AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
       String name = ((TextView) info.targetView).getText().toString();
       menu.setHeaderTitle(name);      
       menu.add(0,v.getId(), 0, "Play");    
       menu.add(0,v.getId(),1,"Delete"); 
    }
4

3 に答える 3

2

longClickを意味する場合は、が不足していOnItemLongClickListener()ます。

そして、コンテキストメニューを呼び出すには、次のことを確認してください:コンテキストメニューの呼び出し方法

于 2012-12-26T03:06:22.650 に答える
2

これを試して:

DLListView.setOnItemLongClickListener(new OnItemLongClickListener() {

    @Override
    public boolean onItemLongClick(AdapterView<?> parent, View view,
            int position, long id) {
        // TODO Auto-generated method stub

          registerForContextMenu( view );
          openContextMenu( view );        

        return false;
    }
});

closeContextMenu()閉じたい場合でも使用できます。お役に立てれば。

于 2012-12-26T03:38:17.993 に答える