Android 如何调用ListView适配器';s从活动中获取项目(i)
我有一个ListView适配器: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
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项)
withCartList adapter=new CartList(this,lista1);lv_list.setAdapter(adapter);