【问题标题】:How to invalidate a listview from another class如何使另一个类的列表视图无效
【发布时间】:2015-06-16 11:56:06
【问题描述】:

当我从另一个不是 Activity 的类中调用 Dialog 时,我想从它的调用 Activity 中使 Listview 无效,并在关闭 Dialog 后 NotifyDatasetChange 适配器。

public class SingleAudioBook extends Activity {
    private ListView lv;
    public void onCreate(Bundle savedInstanceState) {
        lv = (ListView) findViewById(R.id.lvSingleSong);
 lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                    MyDialog.callLoginDialog(SingleAudioBook.this);
}}}

我的对话是:

public class MyDialog {
private static Dialog myDialog;
 public static void callLoginDialog(final Context c){
...
}

【问题讨论】:

  • 您可以使用魔法或将 ListView 引用传递给这个“另一个类”......对您当前的代码和类层次结构一无所知,对解决方案没有帮助
  • 谢谢,我已将我的登录对话框放在另一个类中。是否必须将其设为活动对话框?我想在用户登录过程@selvin 后刷新列表视图
  • 您可以创建它的静态引用,然后检查 null 然后应用代码。
  • @nkushwah 感谢您的回答,在 MyDialog 类中我应该应用代码吗?

标签: android listview dialog


【解决方案1】:

您可以使用 listView 和 Adapter 的静态引用。将您的声明替换为以下内容-

你的活动 -

   public static BaseAdapter your_adapter_name;
    public static ListView your_lv_name;

在另一个类中使用-

// refresh listview
if( Your_Activity.your_lv_name!=null && Your_Activity.your_adapter_name!=null )
{
        Your_Activity.your_adapter_name.notifyDataSetChanged();
        Your_Activity.your_lv_name.refreshDrawableState();
        Your_Activity.your_lv_name.invalidateViews();
}

【讨论】:

  • 你能解释一下如何从另一个类中引用它们吗?如果我之前没有声明它,它将无法从另一个类解析 lv_name
  • 谢谢,您没有给出否定的观点,而是解释并教了我需要帮助的地方
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多