2014-05-06 42 views
1

我有一个文本为Delete的按钮,放在它创建的列表项旁边,我希望它能够在单击按钮时删除它们的列表项。然而,在实施时,我发现引用哪个列表项目将被删除的错误,以及不能再编辑的列表项目。我怎样才能在我的代码中引用哪些项目被点击时被删除以及让列表项再次可用?感谢所有和任何回应!Android - 从ListActivity onClick删除项目?

public class LyricList extends ListActivity { 

private static final int ACTIVITY_CREATE=0; 
private static final int ACTIVITY_EDIT=1; 
private static final int INSERT_ID = Menu.FIRST; 
private static final int DELETE_ID = Menu.FIRST + 1; 
private LyricsDbAdapter mDbHelper; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_lyriclist); 
    mDbHelper = new LyricsDbAdapter(this); 
    mDbHelper.open(); 
    fillData(); 
    registerForContextMenu(getListView()); 
} 

private void fillData() { 
    Cursor lyricsCursor = mDbHelper.fetchAllLyrics(); 
    startManagingCursor(lyricsCursor); 
    String[] from = new String[]{LyricsDbAdapter.KEY_TITLE}; 
    int[] to = new int[]{R.id.text1}; 
    SimpleCursorAdapter lyrics = 
     new SimpleCursorAdapter(this, R.layout.lyrics_row, lyricsCursor, from, to); 
    setListAdapter(lyrics); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    super.onCreateOptionsMenu(menu); 
    menu.add(0, INSERT_ID, 0, R.string.menu_insert); 
    return true; 
} 

@Override 
public boolean onMenuItemSelected(int featureId, MenuItem item) { 
    switch(item.getItemId()) { 
     case INSERT_ID: 
      createLyric(); 
      return true; 
    } 

    return super.onMenuItemSelected(featureId, item); 
} 

public void myClickHandler(View v) 
{ 
    ListView lvItems = getListView(); 
    for (int i=0; i < lvItems.getChildCount(); i++) 
    { 
     lvItems.getChildAt(i).setBackgroundColor(Color.GREEN);   
    } 

    LinearLayout vwParentRow = (LinearLayout)v.getParent(); 
    Button Delbtn = (Button)vwParentRow.getChildAt(1); 

} 

private void createLyric() { 
    Intent i = new Intent(this, NextActivity.class); 
    startActivityForResult(i, ACTIVITY_CREATE); 
} 

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
    super.onListItemClick(l, v, position, id); 
    Intent i = new Intent(this, NextActivity.class); 
    i.putExtra(LyricsDbAdapter.KEY_ROWID, id); 
    startActivityForResult(i, ACTIVITY_EDIT); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    super.onActivityResult(requestCode, resultCode, intent); 
    fillData(); 
} 
} 

功能MyClickHandler是我设置按钮的onClick在XML中

  <Button 
      android:id="@+id/Delbtn" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" 
      android:layout_centerHorizontal="true" 
      android:layout_gravity="right" 
      android:text="Delete" 
      android:onClick="myClickHandler" /> 
+0

在您的onListItemClick方法中,Long id参数是被单击的项目的RowId。只需将它发送到任何你想要的地方。 – DrkStr

+0

感谢您的回应!但我认为这与使用按钮是分开的。你有没有碰到任何关于如何在onClick按钮中使用长ID的建议? – webhoodlum

+0

每个项目都有删除按钮或只是一个单一的删除按钮下面/上面的列表视图? –

回答

0

SO的功能,你想要做的是一个按钮,在列表中添加到您的列表项视图。在这里,我学会了如何去做。 http://androidforbeginners.blogspot.in/2010/03/clicking-buttons-in-listview-row.html

希望它有帮助。

+0

谢谢,我正在从该资源实施代码...它现在崩溃,但会让你知道如果我得到它的工作:) – webhoodlum

+0

如果它确实工作,标记这是一个回答。如果你不能得到它的工作,那么更新你的问题,好好看看,看看它有什么。 – DrkStr