【问题标题】:need to clear adapter from listview需要从列表视图中清除适配器
【发布时间】:2017-11-05 00:06:00
【问题描述】:

我正在尝试从列表视图中清除适配器,但没有任何反应 这是我的代码

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    search_button = (Button) findViewById(R.id.next_button);
    editText = (EditText) findViewById(R.id.edit_text);
    emptyTextView = (TextView) findViewById(R.id.empty_view);

    bookListView = (ListView) findViewById(R.id.list_view);

    // Get a reference to the ConnectivityManager to check state of network connectivity
    ConnectivityManager connMgr = (ConnectivityManager)
            getSystemService(Context.CONNECTIVITY_SERVICE);

    // Get details on the currently active default data network
    final NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();

    search_button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (networkInfo != null && networkInfo.isConnected()) {

                new GetBook().execute(BOOK_REQUEST_URL);
            } else {

//这里需要清除适配器但没有发生

                emptyTextView.setText(R.string.NoConnect);
                bookListView.setEmptyView(emptyTextView);
                bookAdapter.clear();

            }
        }

【问题讨论】:

  • 您的 Adapter 实现是错误的... Fx 您正在从 ArrayAdapter 扩展并覆盖 getCount 但不清楚。常见的错误是在自定义 ArrayAdapter 中再次存储数据,而 ArrayAdapter 已经存储了它。

标签: android arrays listview adapter android-adapter


【解决方案1】:

bookAdapter.clear() 之后在您的代码中包含bookAdapter.notifyDataSetChanged()

【讨论】:

  • 当没有互联网连接时按下按钮搜索应用程序崩溃
  • 你检查状态,但如果没有互联网,你需要编写逻辑。
  • @Stanojkovic 你能举个例子吗
  • @Stanojkovic 这是我的代码 else if (networkInfo == null && !networkInfo.isConnected()){ emptyTextView.setText(R.string.NoConnect); bookListView.setEmptyView(emptyTextView); bookAdapter.clear(); bookAdapter.notifyDataSetChanged(); Log.e("这个错误","er"); }
【解决方案2】:

您必须为您的适配器调用 notifyDataSetChanged() 方法,该方法将通知适配器数据已更改,并且任何反映数据集的视图都应自行刷新。

【讨论】:

  • 当没有互联网连接时按下按钮搜索应用程序崩溃
  • 请添加崩溃日志
  • 06-03 23:17:51.232 5965-5965/com.example.mohammedragab.booklisting E/AndroidRuntime:致命异常:主进程:com.example.mohammedragab.booklisting,PID:5965 java。 lang.NullPointerException:尝试在空对象引用上调用虚拟方法 'void com.example.mohammedragab.booklisting.BookAdapter.clear()' 这给了我错误
  • 您的 BookAdapter 对象为空
  • 这是什么意思?我如何解决它
【解决方案3】:

@mohammedragabmohammedborik,这是互联网逻辑的示例。

final ConnectivityManager conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
final NetworkInfo activeNetwork = conMgr.getActiveNetworkInfo();
if (activeNetwork != null && activeNetwork.isConnected()) {
    // you are online and do your stuff
} else {
    // not online, show MessageBox or something else
} 

将此权限添加到您的 AndroidManifest.xml:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

adapter.clear() 无法为您提供帮助,您尚未提供适配器代码。

【讨论】:

  • 非常感谢您的报价,但我在我的代码中做了这个定义
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-17
相关资源
最近更新 更多