Итак, я создал одно действие «области», в котором есть сетчатый вид кнопок и текстовое изображение на нем, чтобы вы могли видеть название области на кнопке. , когда вы нажимаете кнопку, вы попадаете в «таблицу», где вы видите фактически то же самое + номер таблицы (название области + номер таблицы), но когда я нажимаю на область, приложение падает, t получить название области в действии таблицы.Получение имени из другого вида деятельности
Я знаю, что это сбивает с толку. Я старался изо всех сил с моим объяснением, я поставил здесь оба адаптера, один для областей и второй для таблиц, самым коротким способом, пожалуйста, скажите мне, что я делаю неправильно.
адаптер района:
public ArrayList<Area> areas;
public static LayoutInflater inflater = null;
public MyAreaAdapter(Context mContext, ArrayList<Area> areas) {
this.mContext = mContext;
this.areas = areas;
inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public MyAreaAdapter(Activity_Table activity_zone){
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView textView;
ImageView imageView;
if (convertView == null) {
convertView = inflater.inflate(R.layout.imagebutton_layout, null);
}
ImageView myImageView = (ImageView) convertView.findViewById(R.id.myImageView);
TextView areaName = (TextView) convertView.findViewById(R.id.areaName);
areaName.setText(areas.get(position).getName());
return convertView;
}
и это адаптер таблицы: журнал
ArrayList<Area> areas;
ArrayList<Table> tables;
public static LayoutInflater inflater = null;
public MyTableAdapter(Context mContext, ArrayList<Table> tables) {
this.mContext = mContext;
this.tables = tables;
inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public MyTableAdapter(Activity_Table activity_table){
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView textView;
ImageView imageView;
if (convertView == null){
convertView = inflater.inflate(R.layout.imageview_table_layout, null);
}
ImageView tableImageView = (ImageView) convertView.findViewById(R.id.tableImageView);
TextView tableName = (TextView) convertView.findViewById(R.id.tableName);
tableName.setText(areas.get(position).getName() + " " + areas.get(position).getNumOFTables());
return convertView;
}
Ошибка:
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.util.ArrayList.get(int)' on a null object reference
это линия он выходит из строя:
TableName.setText(areas.get(position).getName() + " " + areas.get(position).getNumOFTables());
это класс, который вызывает мой настольный адаптер:
GridView gridView;
ArrayList<Table> tables;
ImageView imageView;
MyTableAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_activity__table);
Intent startIntent = getIntent();
String numTables = startIntent.getStringExtra("numTables");
gridView = (GridView) findViewById(R.id.gridView2);
OrdersDBAdapter.OrdersDBHelper ordersDBHelper = new OrdersDBAdapter.OrdersDBHelper(Activity_Table.this);
tables = new ArrayList<Table>();
for (int i = 0; i < Integer.parseInt(numTables); i++) {
tables.add(new Table());
}
adapter = new MyTableAdapter(Activity_Table.this, tables);
gridView.setAdapter(adapter);
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
startActivity(new Intent(getApplicationContext(), MyOrderMainActivity.class));
}
});
}
EDIT
Я добавил этот кусок кода для моего адаптера, с целью:
public MyTableAdapter(Context mContext, ArrayList<Table> tables, String area_name, String numTables) {
this.mContext = mContext;
this.tables = tables;
this.area_name = area_name;
this.numTables = numTables;
inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
И я получаю эту ошибку:
Error:(43, 19) error: no suitable constructor found for MyTableAdapter(Activity_Table,ArrayList) constructor MyTableAdapter.MyTableAdapter(Context,ArrayList,String,String) is not applicable (actual and formal argument lists differ in length) constructor MyTableAdapter.MyTableAdapter(Activity_Table) is not applicable (actual and formal argument lists differ in length)
где ваши объекты массива инициализированы? И где ваш вызов класса адаптера? Вы получаете это исключение, потому что ваш список массивов пуст? Отправьте класс, в котором вы инициализировали и вызывают адаптеры. – Ritesh
@Ritesh Я разместил его, пожалуйста, проверьте его –
okay Я отправил кусок кода, где вы хранили пустой объект? Можете ли вы также опубликовать код, в котором вы инициализируете область? – Ritesh