Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何调用ListView适配器';s从活动中获取项目(i)_Android_Listview - Fatal编程技术网

Android 如何调用ListView适配器';s从活动中获取项目(i)

Android 如何调用ListView适配器';s从活动中获取项目(i),android,listview,Android,Listview,我有一个ListView适配器: public class CartList extends BaseAdapter { // ... @Override public long getItemId(int i) { return i; } // ... } 我有这样的活动: public class ListActivity extends AppCompatActivity { ListView lv_list; static ArrayL

我有一个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);
            }
        });
    }
公共类ListActivity扩展了AppCompatActivity{
ListView lv_列表;
静态ArrayList lista1=新ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//我的密码;
lv_list.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
最终int pos=位置;
carentity item=CartList.getItem(pos);
}
});
}
这显示了此错误:

无法从静态方法引用非静态方法“getItem(int)” 上下文

如何调用该方法以获取所选项目?
没有“getItem”行可以正常工作,但我需要对象。

了解java中的访问修饰符。您可以从
lista1
call get()方法从
ArrayList
获取项目,如下所示
carentity item=lista1.get(pos)

或者,如果您仍然希望从适配器获取
carentity
,请将适配器设置为本地变量或实例变量,您可以调用
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);
        }
    });
}
公共类ListActivity扩展了AppCompatActivity{
ListView lv_列表;
静态ArrayList lista1=新ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//从适配器类创建对象
CartList cartAdapter=new CartList();
//我的密码;
lv_list.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
最终int pos=位置;
Cartenty item=cartAdapter.getItem(pos);
}
});
}

您尚未创建CartList,您正在尝试在未创建实际CartList对象的情况下使用该方法,因此该列表将为空。您需要实例化它,并将CartList对象分配给类中的某个变量

例如:

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

问题是,mCartList可能仍然是空的。您需要确保它有数据。我还将了解Java和面向对象编程中的访问修饰符的作用,例如公共、私有、受保护、静态等填充列表?了解java.in
onoptionItemSelected(MenuItem项)
with
CartList adapter=new CartList(this,lista1);lv_list.setAdapter(adapter);