我在这个 class 中有错误如何解决?
I have error in this class how to fix?
我在我的项目中使用片段,我想在部分项目中使用 sqlite
数据库,但我在以下部分中有错误 class
package com.androiddeft.navigationdrawer;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.TextView;
import com.androiddeft.navigationdrawer.fragments.CustomersFragment;
import java.util.List;
public class MyListAdapter extends BaseAdapter {
private Context context;
private List<Employee> employees;
public MyListAdapter(Context context, List<Employee> employees){
this.context = context;
this.employees = employees;
}
@Override
public int getCount() {
return employees.size();
}
@Override
public Object getItem(int i) {
return employees.get(i);
}
@Override
public long getItemId(int i) {
return employees.get(i).getId();
}
@Override
public View getView(final int position, View view, ViewGroup viewGroup) {
View rowView = LayoutInflater.from(context).inflate(R.layout.list_item, viewGroup, false);
TextView txtName = (TextView) rowView.findViewById(R.id.txt_employee_name);
TextView txtPhone = (TextView) rowView.findViewById(R.id.txt_employee_phone);
TextView txtAddress = (TextView) rowView.findViewById(R.id.txt_employee_address);
Button btnEdit = (Button) rowView.findViewById(R.id.btn_edit);
Button btnDelete = (Button) rowView.findViewById(R.id.btn_delete);
txtName.setText(employees.get(position).getName());
txtPhone.setText(employees.get(position).getPhone());
txtAddress.setText(employees.get(position).getAddress());
btnEdit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
**((CustomersFragment) context).editEmployee(employees.get(position))**;
}
});
btnDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new DatabaseHelper(context).deleteEmployee(employees.get(position));
employees.remove(position);
notifyDataSetChanged();
}
});
return rowView;
}
}
我在 android studio IDE 上的错误消息是:
Inconvertible types; cannot cast 'android.content.Context' to 'com.androiddeft.navigationdrawer.fragments.CustomersFragment
注:
Customersfragment is my fragment name and i have error in line 59
Inside two stars symbols
适配器已有上下文。就用那个。
public class MyListAdapter extends BaseAdapter {
private Context context;
private List<Employee> employees;
private CustomersFragment fragment;
public MyListAdapter(Context context, List<Employee> employees, CustomersFragment fragment){
this.context = context;
this.employees = employees;
this.fragment = fragment;
}
@Override
public int getCount() {
return employees.size();
}
@Override
public Object getItem(int i) {
return employees.get(i);
}
@Override
public long getItemId(int i) {
return employees.get(i).getId();
}
@Override
public View getView(final int position, View view, ViewGroup viewGroup) {
View rowView = LayoutInflater.from(context).inflate(R.layout.list_item, viewGroup, false);
TextView txtName = (TextView) rowView.findViewById(R.id.txt_employee_name);
TextView txtPhone = (TextView) rowView.findViewById(R.id.txt_employee_phone);
TextView txtAddress = (TextView) rowView.findViewById(R.id.txt_employee_address);
Button btnEdit = (Button) rowView.findViewById(R.id.btn_edit);
Button btnDelete = (Button) rowView.findViewById(R.id.btn_delete);
txtName.setText(employees.get(position).getName());
txtPhone.setText(employees.get(position).getPhone());
txtAddress.setText(employees.get(position).getAddress());
btnEdit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
fragment.editEmployee(employees.get(position));
}
});
btnDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new DatabaseHelper(context).deleteEmployee(employees.get(position));
employees.remove(position);
notifyDataSetChanged();
}
});
return rowView;
}
}
如果您从 Fragment class 设置此适配器,则只需使用此
adapter = new MyListAdapter(getActivity(), employees,CustomersFragment.this);
就是这样。
更多信息你可以关注这个link。
Call a Fragment method from an Adapter
在 Fragment 中使用 getActivity()
获取上下文,您可以使用构造函数将其传递给 MyListAdapter
class。这行得通,因为 Activity 继承自 Context。
作为替代方案,您可以使用 getApplicationContext()
获取上下文。
我在我的项目中使用片段,我想在部分项目中使用 sqlite
数据库,但我在以下部分中有错误 class
package com.androiddeft.navigationdrawer;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.TextView;
import com.androiddeft.navigationdrawer.fragments.CustomersFragment;
import java.util.List;
public class MyListAdapter extends BaseAdapter {
private Context context;
private List<Employee> employees;
public MyListAdapter(Context context, List<Employee> employees){
this.context = context;
this.employees = employees;
}
@Override
public int getCount() {
return employees.size();
}
@Override
public Object getItem(int i) {
return employees.get(i);
}
@Override
public long getItemId(int i) {
return employees.get(i).getId();
}
@Override
public View getView(final int position, View view, ViewGroup viewGroup) {
View rowView = LayoutInflater.from(context).inflate(R.layout.list_item, viewGroup, false);
TextView txtName = (TextView) rowView.findViewById(R.id.txt_employee_name);
TextView txtPhone = (TextView) rowView.findViewById(R.id.txt_employee_phone);
TextView txtAddress = (TextView) rowView.findViewById(R.id.txt_employee_address);
Button btnEdit = (Button) rowView.findViewById(R.id.btn_edit);
Button btnDelete = (Button) rowView.findViewById(R.id.btn_delete);
txtName.setText(employees.get(position).getName());
txtPhone.setText(employees.get(position).getPhone());
txtAddress.setText(employees.get(position).getAddress());
btnEdit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
**((CustomersFragment) context).editEmployee(employees.get(position))**;
}
});
btnDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new DatabaseHelper(context).deleteEmployee(employees.get(position));
employees.remove(position);
notifyDataSetChanged();
}
});
return rowView;
}
}
我在 android studio IDE 上的错误消息是:
Inconvertible types; cannot cast 'android.content.Context' to 'com.androiddeft.navigationdrawer.fragments.CustomersFragment
注:
Customersfragment is my fragment name and i have error in line 59 Inside two stars symbols
适配器已有上下文。就用那个。
public class MyListAdapter extends BaseAdapter {
private Context context;
private List<Employee> employees;
private CustomersFragment fragment;
public MyListAdapter(Context context, List<Employee> employees, CustomersFragment fragment){
this.context = context;
this.employees = employees;
this.fragment = fragment;
}
@Override
public int getCount() {
return employees.size();
}
@Override
public Object getItem(int i) {
return employees.get(i);
}
@Override
public long getItemId(int i) {
return employees.get(i).getId();
}
@Override
public View getView(final int position, View view, ViewGroup viewGroup) {
View rowView = LayoutInflater.from(context).inflate(R.layout.list_item, viewGroup, false);
TextView txtName = (TextView) rowView.findViewById(R.id.txt_employee_name);
TextView txtPhone = (TextView) rowView.findViewById(R.id.txt_employee_phone);
TextView txtAddress = (TextView) rowView.findViewById(R.id.txt_employee_address);
Button btnEdit = (Button) rowView.findViewById(R.id.btn_edit);
Button btnDelete = (Button) rowView.findViewById(R.id.btn_delete);
txtName.setText(employees.get(position).getName());
txtPhone.setText(employees.get(position).getPhone());
txtAddress.setText(employees.get(position).getAddress());
btnEdit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
fragment.editEmployee(employees.get(position));
}
});
btnDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new DatabaseHelper(context).deleteEmployee(employees.get(position));
employees.remove(position);
notifyDataSetChanged();
}
});
return rowView;
}
}
如果您从 Fragment class 设置此适配器,则只需使用此
adapter = new MyListAdapter(getActivity(), employees,CustomersFragment.this);
就是这样。
更多信息你可以关注这个link。
Call a Fragment method from an Adapter
在 Fragment 中使用 getActivity()
获取上下文,您可以使用构造函数将其传递给 MyListAdapter
class。这行得通,因为 Activity 继承自 Context。
作为替代方案,您可以使用 getApplicationContext()
获取上下文。