-2
我遇到了ArrayAdapter問題。Android Studio ImageButton參考不起作用
我有兩個TabView中的兩個片段列出的元素列表。
Code of the class:
public class AdapterListaInCasa extends ArrayAdapter<String> {
private int layout_resource;
private List<String> str;
private Context mContext;
public AdapterListaInCasa(Context context, int textViewResourceId){
super(context, textViewResourceId);
// TODO Auto-generated constructor stub
}
public AdapterListaInCasa(Context context, int layout_resource,List<String> str) {
super(context, layout_resource, str);
this.mContext = context;
this.str = str;
this.layout_resource = layout_resource;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final int mPosition = position;
LayoutInflater vi;
vi = LayoutInflater.from(getContext());
if (convertView == null) {
convertView = vi.inflate(layout_resource, null);
}
TextView nomeElemento = (TextView)convertView.findViewById(R.id.nomeElemento);
nomeElemento.setText(str.get(mPosition));
ImageButton btnTerminato = (ImageButton) convertView.findViewById(R.id.terminati);
btnTerminato.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) { // bottone elimina
SharedPreferences preferences;
preferences = PreferenceManager.getDefaultSharedPreferences(getContext());
SharedPreferences.Editor editor = preferences.edit();
String lista = "inCasa"+mPosition;
editor.remove(lista);
str.remove(mPosition);
notifyDataSetChanged();
int i=0;
String TAG = "daComprare"+i;
String eliminati = preferences.getString(TAG, "nonTrovato");
while (eliminati != "nonTrovato"){
i++;
TAG = "daComprare"+i;
eliminati = preferences.getString(TAG, "nonTrovato");
}
editor.putString(TAG, str.get(mPosition));
editor.commit();
}
});
ImageButton btnNNmiPiace = (ImageButton) convertView.findViewById(R.id.nonMiPiace);
btnNNmiPiace.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) { // bottone elimina
SharedPreferences preferences;
preferences = PreferenceManager.getDefaultSharedPreferences(getContext());
SharedPreferences.Editor editor = preferences.edit();
String lista = "inCasa"+mPosition;
editor.remove(lista);
str.remove(mPosition);
notifyDataSetChanged();
int i=0;
String TAG = "nonMiPiace"+i;
String nonMiPiace = preferences.getString(TAG, "nonTrovato");
while (nonMiPiace != "nonTrovato"){
i++;
TAG = "nonMiPiace"+i;
nonMiPiace = preferences.getString(TAG, "nonTrovato");
}
editor.putString(TAG, str.get(mPosition));
editor.commit();
}
});
return convertView;
}
}
Code of the xml:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:layout_marginLeft="20dp"
android:id="@+id/nomeElemento"/>
<ImageButton
android:id="@+id/terminati"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_margin="10dp"
android:src="@drawable/ic_carrello" />
<ImageButton
android:id="@+id/nonMiPiace"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_margin="10dp"
android:layout_toLeftOf="@+id/terminati"
android:layout_toStartOf="@+id/terminati"
android:src="@drawable/ic_carrello" />
</RelativeLayout>
的問題是,當我嘗試使用按鈕btnTerminato與
btnTerminato.setOnClickListener(new View.OnClickListener() {...
我recive一個致命的錯誤,指出該變量爲空:
FATAL EXCEPTION: main
Process: com.giulio.marketrack, PID: 24457
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageButton.setMaxWidth(int)' on a null object reference
at com.giulio.marketrack.AdapterListaInCasa.getView(AdapterListaInCasa.java:65)
奇怪的事實是唯一的問題可能是ID引用,但是,您如何看到ID是正確的。
任何人都看到失敗?
提前感謝!
您的堆棧跟蹤看起來不符合您的代碼。 –
閱讀BaseAdapter並在此處實現該代碼。 –
這是怎麼得到**任何**與Android Studio? –