【问题标题】:remembering a selected row in ListView in a fragment在片段中记住 ListView 中的选定行
【发布时间】:2016-10-09 06:41:36
【问题描述】:

我在片段中有一个列表视图。此列表视图具有以下longClick 侦听器。

private AdapterView.OnItemLongClickListener receivedListItemLongClickListener = new AdapterView.OnItemLongClickListener() {

    @Override
    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long arg3) {
        Object object = reeceivedListView.getItemAtPosition(position);
        showDialog(OPTIONS_DIALOG_FRAGMENT);
        return true;
    }

};

它会启动一个新列表AlertDialog,其中有一个删除选项以撤消在父片段中选择的行。 我可以将选择从AlertView 传递回父级,但我不记得选择了哪一行。记住这些数据的正确方法是什么?

【问题讨论】:

  • 该行是你长按的位置
  • 这部分代码你在哪里写的?它在你的适配器里吗?

标签: android listview android-fragments android-alertdialog android-dialogfragment


【解决方案1】:

创建一个变量来为您的适配器存储该数据,如下所示: 在您的适配器中:

int lastSelectedRowByLongClick = -1;

然后在您的长按中:

private AdapterView.OnItemLongClickListener receivedListItemLongClickListener = new AdapterView.OnItemLongClickListener() {

@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long arg3) {
    lastSelectedRowByLongClick = position;
    Object object = reeceivedListView.getItemAtPosition(position);
    showDialog(OPTIONS_DIALOG_FRAGMENT);
    return true;
}

};

最好的做法是将删除和任何功能也放在您的适配器中:

public void deleteLastLongedPressed()
{
 if(lastSelectedRowByLongClick != -1)
 {
  //TODO: write the logic to delete the row
  ///
  //then set the variable to -1 again so nothing happens if no one was selected
   lastSelectedRowByLongClick= -1;
 }
}

【讨论】:

  • 感谢您的建议,但如果片段被销毁或创建片段的新实例,这可能不起作用。另外,我觉得维护一个实例变量来跟踪选择的最后一行并不是一个优雅的解决方案。如果我想这样做。我不会问“记住这些数据的正确方法是什么?”我想知道 Android 是否提供了一种以正确方式执行此操作的特定方法。
  • android 没有提供任何方法来告诉您某些视图点击或任何内容的历史记录。如果你需要它,你应该照顾它。如果您不希望在片段被破坏的情况下擦除变量,请将其设为静态。相信我这是你能做的最好的
  • 我同意它会起作用。但我正试图找出正确的方法来做到这一点。如何有意地将其作为额外变量传递。像intent.putExtra( EXTRAS_KEY, extras ); 这样的东西?
  • 将数据传递到哪里?分片?
  • 从 Fragment 到 AlertDialog。
猜你喜欢
  • 2010-11-12
  • 2016-03-04
  • 1970-01-01
  • 1970-01-01
  • 2017-03-03
  • 1970-01-01
  • 2020-10-19
  • 1970-01-01
  • 2011-09-24
相关资源
最近更新 更多