Так что я делаю это приложение, где у меня будет список предметов, содержащих текст и кнопку, кроме него.Android ListView с кнопкой
Я получаю эту ошибку в моем классе Пользовательского адаптера:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
Весь класс пользовательского адаптер следующим образом:
package com.android.ict.seneca.androidpocketguide;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.List;
public class CustomListAdapter extends ArrayAdapter<RowItem> {
private Context context;
public CustomListAdapter(Context context,
int resourceId,
List<RowItem> items) {
super(context, resourceId, items);
this.context = context;
}
private class ViewHolder {
TextView txtName;
TextView txtDate;
TextView txtLocation;
Button button;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
RowItem rowItem = getItem(position);
LayoutInflater mInflater =
(LayoutInflater) context.getSystemService(
Activity.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_item, null);
holder = new ViewHolder();
holder.txtName = (TextView) convertView.findViewById(R.id.nam);
holder.txtDate = (TextView) convertView.findViewById(R.id.dat);
holder.txtLocation = (TextView) convertView.findViewById(R.id.loc);
holder.button = (Button)convertView.findViewById(R.id.deleteBtn);
convertView.setTag(holder);
}
else
holder = (ViewHolder) convertView.getTag();
holder.txtName.setText(rowItem.getNameId());
holder.txtDate.setText(rowItem.getLocation());
holder.txtLocation.setText(rowItem.getDate());
holder.button.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Toast.makeText(context, "Delete button pressed: ",Toast.LENGTH_LONG).show();
// Your code that you want to execute on this button click
}
});
return convertView;
}
}
У меня 2 раскладки, 1 для ListView itelf, а затем другой - для кнопок.
The ListView элементов выглядит следующим образом (activity_websites):
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/locationList"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</RelativeLayout>
Кнопка XMLFILE выглядит следующим образом (delete.xml):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/deleteBtn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#FFFFFFFF"
android:text="Delete"
android:onClick="onClickDelete"/>
</LinearLayout>
Также у меня есть ощущение, что я делаю прямо теперь вообще неправильно, чтобы получить представление, которое я хочу для своего приложения. Могу ли я помочь им?