Android 如何创建可单击的列表视图并转到用户可以在列表中添加项目的新页面
我想了解一些有关如何创建可单击列表视图并转到新页面的指导,在我创建待办事项列表时,用户可以在列表中添加项目,我希望用户能够创建多个列表,然后点击列表,并在该列表中输入多个项目 谢谢 更新-添加.java代码供参考。这可能比上面的文字更好地解释了我迄今为止所实现的功能。Android 如何创建可单击的列表视图并转到用户可以在列表中添加项目的新页面,android,xml,eclipse,listview,android-activity,Android,Xml,Eclipse,Listview,Android Activity,我想了解一些有关如何创建可单击列表视图并转到新页面的指导,在我创建待办事项列表时,用户可以在列表中添加项目,我希望用户能够创建多个列表,然后点击列表,并在该列表中输入多个项目 谢谢 更新-添加.java代码供参考。这可能比上面的文字更好地解释了我迄今为止所实现的功能。 public class ActionBarMenuDemoActivity extends SherlockListActivity { private static final String[] items = { }; p
public class ActionBarMenuDemoActivity extends SherlockListActivity {
private static final String[] items = { };
private ArrayList<String> words = null;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
initAdapter();
registerForContextMenu(getListView());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
new MenuInflater(this).inflate(R.menu.option, menu);
EditText add = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
View v = menu.findItem(R.id.add).getActionView();
if (v != null) {
add = (EditText) v.findViewById(R.id.title);
}
}
if (add != null) {
add.setOnEditorActionListener(onSearch);
}
return (super.onCreateOptionsMenu(menu));
}
public void onCreateContextMenu(Menu menu, View v,
ContextMenu.ContextMenuInfo menuInfo) {
new MenuInflater(this).inflate(R.menu.context, menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId())
{
case R.id.add:
add();
break;
case R.id.preferences:
startActivity(new Intent(getApplicationContext(),SettingsActivity.class));
break;
}
return (super.onOptionsItemSelected(item));
}
@Override
@SuppressWarnings("unchecked")
public boolean onContextItemSelected(android.view.MenuItem item) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
ArrayAdapter<String> adapter = (ArrayAdapter<String>) getListAdapter();
int itemId = item.getItemId();
if (itemId == R.id.cap) {
String input = words.get(info.position);
input = input.toUpperCase();
adapter.remove(words.get(info.position));
adapter.insert(input, info.position);
return (true);
}
return (super.onContextItemSelected(item));
}
private void initAdapter() {
words = new ArrayList<String>();
for (String s : items) {
words.add(s);
}
setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, words));
}
private void add() {
final View addView = getLayoutInflater().inflate(R.layout.add, null);
new AlertDialog.Builder(this).setTitle("Add a List").setView(addView)
.setPositiveButton("Create", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
addWord((TextView) addView.findViewById(R.id.title));
}
}).setNegativeButton("Cancel", null).show();
}
@SuppressWarnings("unchecked")
private void addWord(TextView title) {
ArrayAdapter<String> adapter = (ArrayAdapter<String>) getListAdapter();
adapter.add(title.getText().toString());
Toast.makeText(ActionBarMenuDemoActivity.this,
title.getText().toString() + " Created", Toast.LENGTH_LONG)
.show();
title.setText("");
}
private TextView.OnEditorActionListener onSearch = new TextView.OnEditorActionListener() {
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (event == null || event.getAction() == KeyEvent.ACTION_UP) {
addWord(v);
InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
return (true);
}
};
}
公共类ActionBarMenuDemoActivity扩展了SherlockListActivity{
私有静态最终字符串[]项={};
private ArrayList words=null;
@凌驾
创建公共空间(捆绑冰柱){
超级冰柱;
initAdapter();
registerForContextMenu(getListView());
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
新菜单充气器(此)。充气(右菜单选项,菜单);
EditText add=null;
if(Build.VERSION.SDK\u INT>=Build.VERSION\u code.HONEYCOMB){
View v=menu.findItem(R.id.add).getActionView();
如果(v!=null){
add=(EditText)v.findViewById(R.id.title);
}
}
如果(添加!=null){
add.setOnEditorActionListener(onSearch);
}
返回(super.oncreateoptions菜单(menu));
}
public void onCreateContextMenu(菜单菜单,视图v,
ContextMenu.ContextMenuInfo menuInfo){
新菜单充气器(此)。充气(R.menu.context,menu);
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
开关(item.getItemId())
{
案例R.id.add:
添加();
打破
案例R.id.首选项:
startActivity(新意图(getApplicationContext(),setingsActivity.class));
打破
}
返回(super.onOptionsItemSelected(item));
}
@凌驾
@抑制警告(“未选中”)
公共布尔值onContextItemSelected(android.view.MenuItem项){
AdapterView.AdapterContextMenuInfo信息=(AdapterView.AdapterContextMenuInfo)项。getMenuInfo();
ArrayAdapter=(ArrayAdapter)getListAdapter();
int itemId=item.getItemId();
if(itemId==R.id.cap){
字符串输入=words.get(info.position);
input=input.toUpperCase();
移除(words.get(info.position));
适配器插入(输入,信息位置);
返回(真);
}
返回(super.onContextItemSelected(item));
}
私有void initAdapter(){
words=newarraylist();
用于(字符串s:项){
字。加上(s);
}
setListAdapter(新阵列适配器)(此,
android.R.layout.simple_list_item_1,words));
}
私有void add(){
最终视图addView=GetLayoutFlater().充气(R.layout.add,null);
新建AlertDialog.Builder(this).setTitle(“添加列表”).setView(addView)
.setPositiveButton(“创建”,新建DialogInterface.OnClickListener()){
public void onClick(对话框接口对话框,int whichButton){
addWord((TextView)addView.findViewById(R.id.title));
}
}).setNegativeButton(“取消”,null).show();
}
@抑制警告(“未选中”)
私有void addWord(文本视图标题){
ArrayAdapter=(ArrayAdapter)getListAdapter();
add(title.getText().toString());
Toast.makeText(ActionBarMenuDemoActivity.this、,
title.getText().toString()+“已创建”,Toast.LENGTH\u LONG)
.show();
标题.setText(“”);
}
private TextView.OnEditorActionListener onSearch=新建TextView.OnEditorActionListener(){
公共布尔onEditorAction(TextView v、int actionId、KeyEvent事件){
if(event==null | | event.getAction()==KeyEvent.ACTION_UP){
addWord(v);
InputMethodManager imm=(InputMethodManager)getSystemService(输入方法服务);
imm.hideSoftInputFromWindow(v.getWindowToken(),0);
}
返回(真);
}
};
}
其中一些代码将被删除,因为我使用了教程作为起点 创建活动要显示列表,您需要有两个适配器:一个用于显示列表,一个用于todo项目。在第一个列表中选择一个项目后,加载todo项目并使用todo适配器显示它们…以创建listview&adapter…或在您面临问题的地方发布代码?Michael,非常感谢您的回复。你能不能详细解释一下我是如何做到这一点的,或者如果可能的话,提供一些我可以修改的代码框架,以便我更好地理解。现在我将把我的主要活动代码添加到原来的帖子中——这可能会帮助你理解我到目前为止所做的事情。