Android的ListView控件的ContextMenu [英] Android ListView ContextMenu
本文介绍了Android的ListView控件的ContextMenu的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想在我的的ListView
上一个项目创建一个文本菜单
当用户敲击举行。然而,当我在我的项目挖掘握住我的code不显示任何东西。可能有人请检查我的code。谢谢你。
公共类MYD扩展SherlockListFragment工具
ActionBar.TabListener { 私人档案文件;
私人列表<串GT; myList中; 私人片段mFragment; 私人的ListView DLListView;
私人ArrayAdapter<串GT; listAdapter; @覆盖
公共无效onActivityCreated(捆绑savedInstanceState){
super.onActivityCreated(savedInstanceState);
getActivity()的setContentView(R.layout.dl_listview)。 查看空= getActivity()findViewById(R.id.empty)。
DLListView =(ListView控件)getActivity()findViewById(R.id.DLListView)。
DLListView.setEmptyView(空); 如果(!Environment.getExternalStorageState()。等于(
Environment.MEDIA_MOUNTED)){
Toast.makeText(getActivity(),
错误!未找到SD卡!
Toast.LENGTH_LONG).show();
}其他{
文件目录=新的文件(Environment.getExternalStorageDirectory()
+文件分割符+ST);
directory.mkdirs();
}
DLListView =(ListView控件)getActivity()findViewById(R.id.DLListView)。 myList中=新的ArrayList<串GT;(); 文件SD卡= Environment.getExternalStorageDirectory();
文件=新的文件(sdCard.getAbsolutePath()+/圣/); 文件列表[] = file.listFiles(); 的for(int i = 0; I< List.length的数字,我++){
字符串文件名=列表[我] .getName();
文件名= fileName.replace(,名为txt);
myList.add(文件名); } listAdapter =新ArrayAdapter<串GT;(getActivity()
R.layout.simplerow,myList中); DLListView.setAdapter(listAdapter); DLListView.setOnItemClickListener(新OnItemClickListener(){
@覆盖
公共无效onItemClick(适配器视图<>母公司,观景,
INT位置,长的id){
// TODO自动生成方法存根
字符串textToPass = myList.get(位置);
意图I =新意图(getActivity(),ViewActivity.class);
textToPass = textToPass.replace(textToPass +,textToPass
+符.txt);
i.putExtra(textToPass,textToPass);
startActivity(ⅰ);
}
}); DLListView.setOnItemLongClickListener(新OnItemLongClickListener(){ @覆盖
公共布尔onItemLongClick(适配器视图<>母公司,观景,
INT位置,长的id){
// TODO自动生成方法存根
返回false;
}
});} 公共无效onCreateContextMenu(文本菜单菜单视图V,ContextMenuInfo menuInfo)
{
super.onCreateContextMenu(菜单,V,menuInfo);
AdapterContextMenuInfo信息=(AdapterContextMenuInfo)menuInfo;
字符串名称=((的TextView)info.targetView).getText()的toString()。
menu.setHeaderTitle(名);
menu.add(0,v.getId(),0,播放);
menu.add(0,v.getId(),1,删除);
}
解决方案
试试这个:
DLListView.setOnItemLongClickListener(新OnItemLongClickListener(){ @覆盖
公共布尔onItemLongClick(适配器视图<>母公司,观景,
INT位置,长的id){
// TODO自动生成方法存根 registerForContextMenu(视图);
openContextMenu(视图); 返回false;
}
});
甚至可以使用 closeContextMenu()
如果您要关闭。希望这可以帮助。
I'm trying to create a ContextMenu
when user tap hold on an item in my ListView
. However my code doesn't show anything when I tap hold on my item. Could somebody please check on my code. Thank you.
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");
}
解决方案
Try this:
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;
}
});
Even you can use closeContextMenu()
if you want to close. Hope this helps.
这篇关于Android的ListView控件的ContextMenu的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文