2016-05-12 112 views
1
在我的列表視圖

嘗試調用虛擬方法「無效android.widget.ListView.clearTextFilter()」上的空對象引用

和這裏

查閱即時決策搜索查看是我的代碼

package intikom.streammobile.Customer; 

import android.app.ProgressDialog; 
import android.app.SearchManager; 
import android.content.Context; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.SearchView; 
import android.text.TextUtils; 
import android.view.KeyEvent; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ListView; 
import android.widget.Toast; 

import org.json.simple.JSONArray; 
import org.json.simple.JSONObject; 
import org.json.simple.parser.JSONParser; 
import org.json.simple.parser.ParseException; 

import java.util.ArrayList; 
import java.util.List; 

import intikom.streammobile.Index; 
import intikom.streammobile.R; 
import intikom.streammobile.Utility.BigProccess; 
import intikom.streammobile.Utility.RESTClient; 
import intikom.streammobile.Workflow.MyRequest.ListRequestItem; 
import intikom.streammobile.Workflow.WorkflowActivity; 

public class ListCustomer extends AppCompatActivity implements SearchView.OnQueryTextListener { 
    private static final String ARG_SECTION_NUMBER = "section_number"; 
    private static String URLService; 
    private static String rowsPerPage; 
    private static ListView lv; 
    private static SharedPreferences pref; 
    private List<ListCustomerItem> mItems; 
    private List<ListCustomerItem> mItems2; 
    private ListCustomerItem item; 
    private static String customerID; 


    public ListCustomer() { 
    } 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_list_customer); 

     URLService = getString(R.string.URLService); 
     final ListView lv = (ListView)findViewById(R.id.lvCustomerList); 
     lv.setTextFilterEnabled(true); 
     lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       item = new ListCustomerItem(); 
       item = mItems.get(position); 
       SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE); 
       SharedPreferences.Editor editor = pref.edit(); 
       editor.putString("CustomerID", item.CustID); 
       editor.putString("CustomerName", item.CustName); 
       editor.commit(); 


       Intent i = new Intent(getApplicationContext(),WorkflowActivity.class); 
       i.putExtra("CustomerName", item.CustName); 
       setResult(1000, i); 
       finish(); 

      } 
     }); 

     getCustomer(); 
     getLocal(); 
     if (mItems==null) 
     { 
      if(mItems2==null) { 
       Toast.makeText(this, "Internet connection appears to be offline", 
         Toast.LENGTH_LONG).show(); 
      } 
      else 
      { 
       lv.setAdapter(new ListCustomerAdapter(this, mItems2)); 

      } 
     } 
     else 
     { 
      lv.setAdapter(new ListCustomerAdapter(this, mItems)); 

     } 

     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 

     getMenuInflater().inflate(R.menu.searchbox, menu); 

     SearchManager searchManager = 
       (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
     SearchView searchView = 
       (SearchView) menu.findItem(R.id.action_search).getActionView(); 
     searchView.setSearchableInfo(
       searchManager.getSearchableInfo(getComponentName())); 

     searchView.setSubmitButtonEnabled(true); 
     searchView.setOnQueryTextListener(this); 

     return true; 
    } 


    @Override 
    public boolean onQueryTextSubmit(String query) { 
     return false; 
    } 

    @Override 
    public boolean onQueryTextChange(String newText) { 
     if (TextUtils.isEmpty(newText)) 
     { 
      lv.clearTextFilter(); 
     } 
     else 
     { 
      lv.setFilterText(newText.toString()); 
     } 


     return true; 
    } 
} 

和這是XML佈局菜單

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 

    <item 
     android:id="@+id/action_search" 
     android:icon="@android:drawable/ic_menu_search" 
     app:showAsAction="collapseActionView|always" 
     android:title="Search" 
     app:actionViewClass="android.support.v7.widget.SearchView"/> 
</menu> 

和logcat中說:

嘗試在空對象引用調用虛擬方法無效 android.widget.ListView.clearTextFilter()'

你能告訴我在哪裏,我錯了?

回答

2

改變這一行:

final ListView lv = (ListView)findViewById(R.id.lvCustomerList); 

本:

lv = (ListView)findViewById(R.id.lvCustomerList); 

你已經宣佈你listview實例作爲global,並再次要定義它作爲一個local變量,這就是爲什麼你的global實例總是在null

+0

工程就像一個魅力,thx兄弟! – Borom1r

相關問題