Я новичок в разработке Android. Я пытался создать собственный адаптер массива для отображения чего-либо. но когда я передаю аргументы из основного действия, это показывает ошибку в контексте как требуемый контекст типа и предоставленная основная деятельность..
Это мой первый вопрос, друзья, помогите пожалуйста
основная деятельность.java
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayList<text> arr= new ArrayList<>();
arr.add(new text(4,5));
textadapter extadapter=new textadapter(this,arr);
ListView listView=findViewById(R.id.list_item);
listView.setAdapter(extadapter);
}
}
пользовательский адаптер массива
public class textadapter extends ArrayAdapter {
public textadapter(@NonNull Context context,ArrayList<text> arrayList) {
super(context,0,arrayList);
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
if (convertView==null){
convertView= LayoutInflater.from(getContext()).inflate(R.layout.list,parent,false);
}
text a= (text) getItem(position);
TextView t=convertView.findViewById(R.id.text);
TextView T1=convertView.findViewById(R.id.text2);
t.setText(a.getText());
T1.setText(a.getStext());
return convertView;
}
}
Измените getContext() в методе getView() в классе TextAdapter на контекст и создайте переменную с именем mContext, поскольку вы уже передаете контекст основного действия в конструктор адаптера.
public class textadapter extends ArrayAdapter {
private Context context;
public textadapter(@NonNull Context context,ArrayList<text> arrayList) {
super(context,arrayList);
this.context = context;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
if (convertView==null){
convertView= LayoutInflater.from(context).inflate(R.layout.list,parent,false);
}
text a= (text) getItem(position);
TextView t=convertView.findViewById(R.id.text);
TextView T1=convertView.findViewById(R.id.text2);
t.setText(a.getText());
T1.setText(a.getStext());
return convertView;
}
super(context,0,arrayList);
уберите ноль из этой строкиsuper(context,arrayList);