2017-03-31 43 views
-2

調用ListView控件適配器的getItem(我)我有一個ListView適配器:如何從活動

public class CartList extends BaseAdapter { 
    // ... 
    @Override 
    public long getItemId(int i) { return i; } 
    // ... 

} 

而且我有這樣的活動:

public class ListActivity extends AppCompatActivity { 
    ListView lv_list; 
    static ArrayList<CartEntity> lista1 = new ArrayList<CartEntity>(); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // my_code; 
     lv_list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       final int pos = position; 
       CartEntity item = CartList.getItem(pos); 
      } 
     }); 
    } 

這表明了這個錯誤:

Non-static method 'getItem(int)' cannot be referenced from a static context

如何調用獲取選定項目的方法? 沒有'getItem'行工作正常,但我需要的對象。

+0

你在哪裏填充你的'ListView'並在哪裏創建了你的適配器的對象填充你的列表? – Geek

+0

瞭解java中的訪問修飾符。 ''onOptionsItemSelected(MenuItem item)''中帶有'CartList adapter = new CartList(this,lista1)的 –

+0

; lv_list.setAdapter(adapter);' –

回答

1

瞭解java中的訪問修飾符。您可以從ArrayList得到lista1調用get()方法的項目像這樣CartEntity item = lista1.get(pos)

,或者如果你仍然想CartEntity從適配器使適配器的局部變量或實例變量,你可以調用getItem(),因爲它是公共

public class ListActivity extends AppCompatActivity { 
ListView lv_list; 
static ArrayList<CartEntity> lista1 = new ArrayList<CartEntity>(); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // Create object from Adapter Class 
    CartList cartAdapter = new CartList(); 

    // my_code; 
    lv_list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      final int pos = position; 
      CartEntity item = cartAdapter.getItem(pos); 
     } 
    }); 
} 
+0

謝謝!有用!我會去讀。 –

1

您還沒有創建CartList,您嘗試使用未創建實際CartList對象的方法,因此列表將爲空。您需要實例化它並將CartList對象分配給類中的某個變量。

例如:

public class ListActivity extends AppCompatActivity { 
    private CartList mCartList = new CartList(); 

的問題是,仍mCartList可以是空的。你需要確保它有數據。我還會學習Java和麪向對象編程中的訪問修飾符,比如Public,Private,Protected,Static等。