Android listview.getItemAtPosition为空
我创建了一个包含ListView的片段,并创建了一个costumAdapter来填充它 当我点击ListView上的一个项目时,我在一个空对象引用上遇到了一个错误 我单击的项的位置是正确的,但是当我尝试访问listView的对象时,我得到了一个错误 这是我的碎片Android listview.getItemAtPosition为空,android,listview,Android,Listview,我创建了一个包含ListView的片段,并创建了一个costumAdapter来填充它 当我点击ListView上的一个项目时,我在一个空对象引用上遇到了一个错误 我单击的项的位置是正确的,但是当我尝试访问listView的对象时,我得到了一个错误 这是我的碎片 public class PartiteDisponibiliFragment extends Fragment { public PartiteDisponibiliFragment() { // Required emp
public class PartiteDisponibiliFragment extends Fragment {
public PartiteDisponibiliFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_partite_disponibili, container, false);
final databasehelper databaseHelper = new databasehelper(this.getContext());
final ListView simpleList = view.findViewById(R.id.ListView01);
ArrayList<String> list_data = new ArrayList<String>();
ArrayList<String> list_luogo = new ArrayList<String>();
ArrayList<String> list_orario = new ArrayList<String>();
Button btn_addpartita = view.findViewById(R.id.btn_addpartita);
final Cursor b = databaseHelper.getPartiteDisponibili();
try {
while (b.moveToNext()) {
list_luogo.add(b.getString(0));
list_orario.add(b.getString(1));
list_data.add(b.getString(2));
}
} finally {
b.close();
}
MyAdapterMatch customAdapter =
new MyAdapterMatch(this.getContext(),
list_luogo, list_orario, list_data);
simpleList.setAdapter(customAdapter);
btn_addpartita.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent myIntent = new Intent(getContext(), AddPartitaActivity.class);
startActivity(myIntent);
}
});
simpleList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
Toast.makeText(getContext(), "Foo", Toast.LENGTH_SHORT).show();
Object o = simpleList.getItemAtPosition(position);
String s = o.toString();
}
});
return view;
}
}
public类partitiondisponibilifragment扩展了片段{
公共分区的isponibilifragment(){
//必需的空公共构造函数
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
视图=充气机。充气(R.layout.fragment\u partite\u disponili,container,false);
final databasehelper databasehelper=新的databasehelper(this.getContext());
最终ListView simpleList=view.findViewById(R.id.ListView01);
ArrayList_data=新的ArrayList();
ArrayList\u luogo=新的ArrayList();
ArrayList_orario=新的ArrayList();
按钮btn_addpartita=view.findviewbyd(R.id.btn_addpartita);
最后一个游标b=databaseHelper.getPartiteDisponibili();
试一试{
while(b.moveToNext()){
list_luogo.add(b.getString(0));
list_orario.add(b.getString(1));
list_data.add(b.getString(2));
}
}最后{
b、 close();
}
MyAdapterMatch自定义适配器=
新建MyAdapterMatch(this.getContext(),
罗列、罗列、罗列、罗列数据);
simpleList.setAdapter(customAdapter);
btn_addpartita.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Intent myIntent=newintent(getContext(),AddPartitaActivity.class);
星触觉(myIntent);
}
});
simpleList.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(适配器视图arg0、视图arg1、内部位置、长arg3){
Toast.makeText(getContext(),“Foo”,Toast.LENGTH_SHORT.show();
对象o=simpleList.getItemAtPosition(位置);
字符串s=o.toString();
}
});
返回视图;
}
}
这是我的costumAdapter
public class MyAdapterMatch extends BaseAdapter {
private Context context;
private int resource;
private ArrayList<String> list_luogo;
private ArrayList<String> list_orario;
private ArrayList<String> list_data;
private LayoutInflater inflter;
//static ArrayList<Integer> selectedAnswers;
MyAdapterMatch(Context applicationContext,
ArrayList<String> list_luogo,
ArrayList<String> list_orario,
ArrayList<String> list_data) {
this.context = context;
this.resource = resource;
this.list_data = list_data;
this.list_orario = list_orario;
this.list_luogo = list_luogo;
// initialize arraylist and add static string for all the questions
/*selectedAnswers = new ArrayList<>();
for (int i = 0; i < list_data.size(); i++) {
selectedAnswers.add(0);
}*/
inflter = (LayoutInflater.from(applicationContext));
}
@Override
public int getCount() {
return list_data.size();
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@SuppressLint("ViewHolder")
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
view = inflter.inflate(R.layout.partite_item, null);
// get the reference of TextView and Button's
TextView tv_data = view.findViewById(R.id.tv_data);
TextView tv_luogo = view.findViewById(R.id.tv_luogo);
TextView tv_orario = view.findViewById(R.id.tv_orario);
tv_data.setText(list_data.get(i));
tv_luogo.setText(list_luogo.get(i));
tv_orario.setText(list_orario.get(i));
return view;
}
}
公共类MyAdapterMatch扩展BaseAdapter{
私人语境;
私有int资源;
私人ArrayList_luogo;
私人ArrayList_orario;
私有ArrayList_数据;
私人停车场;
//静态数组列表选择的答案;
MyAdapterMatch(上下文应用程序上下文,
ArrayList\u luogo,
ArrayList_orario,
ArrayList列表(U数据){
this.context=上下文;
这个资源=资源;
this.list\u data=list\u data;
this.list_orario=list_orario;
this.list\u luogo=list\u luogo;
//初始化arraylist并为所有问题添加静态字符串
/*selectedAnswers=newarraylist();
对于(int i=0;i
这是我的partite_item.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Luogo:"
android:textColor="@android:color/black"
android:textSize="18sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="Data:"
android:textColor="@android:color/black"
android:textSize="18sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView2" />
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="Orario:"
android:textColor="@android:color/black"
android:textSize="18sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView3" />
<TextView
android:id="@+id/tv_luogo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginStart="16dp"
android:text="TextView"
android:textSize="18sp"
app:layout_constraintStart_toEndOf="@+id/textView2"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_data"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:text="TextView"
android:textSize="18sp"
app:layout_constraintStart_toEndOf="@+id/textView3"
app:layout_constraintTop_toBottomOf="@+id/tv_luogo" />
<TextView
android:id="@+id/tv_orario"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:text="TextView"
android:textSize="18sp"
app:layout_constraintStart_toEndOf="@+id/textView4"
app:layout_constraintTop_toBottomOf="@+id/tv_data" />
我认为,这部分代码是一个问题:
@Override
public Object getItem(int i) {
return null;
}
我认为,这部分代码是一个问题:
@Override
public Object getItem(int i) {
return null;
}
你的问题是
@Override
public Object getItem(int i) {
return null;
}
您返回的是null,而不是返回列表位置,即
@Override
public long getItemId(int i) {
return 0;
}
您正在返回null,而不是返回id,即i
见以下代码:
@Override
public Object getItem(int i) {
return list_data.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
你的问题是
@Override
public Object getItem(int i) {
return null;
}
您返回的是null,而不是返回列表位置,即
@Override
public long getItemId(int i) {
return 0;
}
您正在返回null,而不是返回id,即i
见以下代码:
@Override
public Object getItem(int i) {
return list_data.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
试试这个
将接口制作到适配器中以进行单击处理
onItemClickListner onItemClickListner;
public void setOnItemClickListner(CommentsAdapter.onItemClickListner onItemClickListner) {
this.onItemClickListner = onItemClickListner;
}
public interface onItemClickListner {
void onClick(Contact contact);//pass your object types.
}
和适配器中的getView()
outerContiner.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onItemClickListner.onClick(contact);
}
});
最后,将适配器绑定到列表视图中,然后调用下面的代码
adapter.setOnItemClickListner(new CommentsAdapter.onItemClickListner() {
@Override
public void onClick(Contact contact) {
// here get click item object data.
}
});
试试这个
将接口制作到适配器中以进行单击处理
onItemClickListner onItemClickListner;
public void setOnItemClickListner(CommentsAdapter.onItemClickListner onItemClickListner) {
this.onItemClickListner = onItemClickListner;
}
public interface onItemClickListner {
void onClick(Contact contact);//pass your object types.
}
和适配器中的getView()
outerContiner.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onItemClickListner.onClick(contact);
}
});
最后,将适配器绑定到列表视图中,然后调用下面的代码
adapter.setOnItemClickListner(new CommentsAdapter.onItemClickListner() {
@Override
public void onClick(Contact contact) {
// here get click item object data.
}
});
请添加StackTrace?请添加StackTrace?