I have implemented a customAdapter and a listView, and everything works correctly, the problem now is that not as well as finding the id of each element created, I have to use methods in another activity, but when I try to say recover the id rightly gives me a null point Exception
package com.example.businesssimulator;
public class FinanziaAziendaClass {
private String nomeAziendaFinanzia;
private String settoreAziendaFinanzia;
private String numeroDipendentiFinanzia;
private String ultimoFatturatoFinanzia;
private String valoreTotaleAziendaFinanzia;
private int riquadroAziendaFinanzia;
private int lineaSeparatoriaAziendaFinanzia;
private int informazioniAzienda;
//Nelle info
private String descrizioneAzienda;
private int annoDiNascita;
private String affidabilitàAziendaFinanzia;
Entity FinanziaAziendaClass public FinanziaAziendaClass(String nomeAziendaFinanzia, String settoreAziendaFinanzia, String numeroDipendentiFinanzia, String ultimoFatturatoFinanzia, String valoreTotaleAziendaFinanzia, int riquadroAziendaFinanzia, int lineaSeparatoriaAziendaFinanzia) { this.nomeAziendaFinanzia = nomeAziendaFinanzia; this.settoreAziendaFinanzia = settoreAziendaFinanzia; this.numeroDipendentiFinanzia = numeroDipendentiFinanzia; this.ultimoFatturatoFinanzia = ultimoFatturatoFinanzia; this.valoreTotaleAziendaFinanzia = valoreTotaleAziendaFinanzia; this.riquadroAziendaFinanzia = riquadroAziendaFinanzia; this.lineaSeparatoriaAziendaFinanzia = lineaSeparatoriaAziendaFinanzia; }
public String getNomeAziendaFinanzia() {
return "Nome azienda: "+nomeAziendaFinanzia;
}
public void setNomeAziendaFinanzia(String nomeAziendaFinanzia) {
this.nomeAziendaFinanzia = nomeAziendaFinanzia;
}
public String getSettoreAziendaFinanzia() {
return "Tipologia settore: "+settoreAziendaFinanzia;
}
public void setSettoreAziendaFinanzia(String settoreAziendaFinanzia) {
this.settoreAziendaFinanzia = settoreAziendaFinanzia;
}
public String getNumeroDipendentiFinanzia() {
return "Numero dipendenti"+numeroDipendentiFinanzia;
}
public void setNumeroDipendentiFinanzia(String numeroDipendentiFinanzia) {
this.numeroDipendentiFinanzia = numeroDipendentiFinanzia;
}
public String getUltimoFatturatoFinanzia() {
return "Fatturato scorso anno: "+ultimoFatturatoFinanzia;
}
public void setUltimoFatturatoFinanzia(String ultimoFatturatoFinanzia) {
this.ultimoFatturatoFinanzia = ultimoFatturatoFinanzia;
}
public String getValoreTotaleAziendaFinanzia() {
return "Valore totale aziendale: "+valoreTotaleAziendaFinanzia;
}
public void setValoreTotaleAziendaFinanzia(String valoreTotaleAziendaFinanzia) {
this.valoreTotaleAziendaFinanzia = valoreTotaleAziendaFinanzia;
}
public int getRiquadroAziendaFinanzia() {
return riquadroAziendaFinanzia;
}
public void setRiquadroAziendaFinanzia(int riquadroAziendaFinanzia) {
this.riquadroAziendaFinanzia = riquadroAziendaFinanzia;
}
public int getLineaSeparatoriaAziendaFinanzia() {
return lineaSeparatoriaAziendaFinanzia;
}
public void setLineaSeparatoriaAziendaFinanzia(int lineaSeparatoriaAziendaFinanzia) {
this.lineaSeparatoriaAziendaFinanzia = lineaSeparatoriaAziendaFinanzia;
}
public String getDescrizioneAzienda() {
return descrizioneAzienda;
}
public void setDescrizioneAzienda(String descrizioneAzienda) {
this.descrizioneAzienda = descrizioneAzienda;
}
public int getAnnoDiNascita() {
return annoDiNascita;
}
public void setAnnoDiNascita(int annoDiNascita) {
this.annoDiNascita = annoDiNascita;
}
public String getAffidabilitàAziendaFinanzia() {
return affidabilitàAziendaFinanzia;
}
public void setAffidabilitàAziendaFinanzia(String affidabilitàAziendaFinanzia) {
this.affidabilitàAziendaFinanzia = affidabilitàAziendaFinanzia;
}
}
CustomAdapterFinanziaAzienda
package com.example.businesssimulator;
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.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.w3c.dom.Text;
import java.util.List;
public class CustomAdapterFinanziaAzienda extends ArrayAdapter<FinanziaAziendaClass> {
ViewHolder2 viewHolder2;
public CustomAdapterFinanziaAzienda(@NonNull Context context, int resource, @NonNull List<FinanziaAziendaClass> objects) {
super(context, resource, objects);
}
//Classe per i widget
public class ViewHolder2{
ImageView imageViewRiquadroAziendaFinanzia;
TextView textViewNomeAziendaFinanzia;
TextView textViewSettoreAziendaFinanzia;
TextView textViewNumeroDipendentiFinanzia;
TextView textViewUltimoFatturatoFinanzia;
TextView textViewValoreTotaleAziendaFinanzia;
ImageButton imageButtonInfoAziendaFinanzia;
ImageView imageViewLineaSeparatoriaFinanzia;
Button bottoneDieciPerCento;
Button bottoneVentiPerCento;
Button bottoneTrentaPerCento;
Button bottoneQuarantanovePerCento;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
//Diamo all'oggetto finanziaAziendaiesimo la posizione della vista per ogni elemento creato successivamente nell'arrayList
FinanziaAziendaClass finanziaAziendaIesimo = getItem(position);
if(convertView == null){
//Oggetto che serve per prendere gli attributi della classe Viewholder2
viewHolder2 = new ViewHolder2();
//Recuperiamo l'oggetto di android Layout_inflate_service che serve per accedere ad un layout.
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//Diciamo semplicemente che la View convertView deve fare l'inflate sul nostro layout ovvero disegnarla nel arrayAdapter
convertView = inflater.inflate(R.layout.custom_adapter_finanzia_azienda,null);
//Assegniamo a viewholder tramite l'utilizzo di convertView che effettua l'accesso all'layout il riferimento alla view singola
viewHolder2.imageViewRiquadroAziendaFinanzia = (ImageView) convertView.findViewById(R.id.imageView_finanzia_azienda_contorno_lavoro);
viewHolder2.textViewNomeAziendaFinanzia = (TextView) convertView.findViewById(R.id.textView_finanzia_azienda_nome_azienda);
viewHolder2.textViewSettoreAziendaFinanzia = (TextView) convertView.findViewById(R.id.textView_finanzia_azienda_settore_azienda);
viewHolder2.textViewNumeroDipendentiFinanzia = (TextView) convertView.findViewById(R.id.textView_finanzia_azienda_numero_dipendenti);
viewHolder2.textViewUltimoFatturatoFinanzia = (TextView) convertView.findViewById(R.id.textView_finanzia_azienda_ultimo_fatturato);
viewHolder2.textViewValoreTotaleAziendaFinanzia = (TextView) convertView.findViewById(R.id.textView_finanzia_azienda_valore_azienda);
viewHolder2.imageViewLineaSeparatoriaFinanzia = (ImageView) convertView.findViewById(R.id.imageView_finanzia_azienda_linea_separatoria);
viewHolder2.imageButtonInfoAziendaFinanzia = (ImageButton) convertView.findViewById(R.id.imageButton_finanzia_azienda_informazioni_azienda);
viewHolder2.bottoneDieciPerCento = (Button) convertView.findViewById(R.id.button_finanzia_azienda_dieci_per_cento);
viewHolder2.bottoneVentiPerCento = (Button) convertView.findViewById(R.id.button_finanzia_azienda_venti_per_cento);
viewHolder2.bottoneTrentaPerCento = (Button) convertView.findViewById(R.id.button_finanzia_azienda_trenta_per_cento);
viewHolder2.bottoneQuarantanovePerCento = (Button) convertView.findViewById(R.id.button_finanzia_azienda_quarantanove_per_cento);
//Inseriamo nella convertView il ricordo dei riferimenti di viewholder delle view singole
// e' come se impostiamo un insieme di id all'interno di un oggetto e il tag li memorizza tutti
convertView.setTag(viewHolder2);
}else {
viewHolder2 = (ViewHolder2) convertView.getTag();
}
viewHolder2.imageViewRiquadroAziendaFinanzia.setImageResource(finanziaAziendaIesimo.getRiquadroAziendaFinanzia()); viewHolder2.textViewNomeAziendaFinanzia.setText(finanziaAziendaIesimo.getNomeAziendaFinanzia()); viewHolder2.textViewSettoreAziendaFinanzia.setText(finanziaAziendaIesimo.getSettoreAziendaFinanzia()); viewHolder2.textViewNumeroDipendentiFinanzia.setText(finanziaAziendaIesimo.getNumeroDipendentiFinanzia()); viewHolder2.textViewUltimoFatturatoFinanzia.setText(finanziaAziendaIesimo.getUltimoFatturatoFinanzia()); viewHolder2.textViewValoreTotaleAziendaFinanzia.setText(finanziaAziendaIesimo.getValoreTotaleAziendaFinanzia()); viewHolder2.imageViewLineaSeparatoriaFinanzia.setImageResource(finanziaAziendaIesimo.getLineaSeparatoriaAziendaFinanzia());
return convertView;
}
}
XML CustomAdapterFinanziaAzienda
FinanziaAzienda
package com.example.businesssimulator;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
public class FinanziaAzienda extends AppCompatActivity {
private double soldi;
private int soldiShop;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_finanzia_azienda);
}
@Override
protected void onResume() {
super.onResume();
creazioneFinanziaAziende();
}
public void creazioneFinanziaAziende(){
ListView listaFinanziaAziende = findViewById(R.id.listView_lista_finanzia_aziende);
ArrayList<FinanziaAziendaClass> finanziaAziendaClassArrayList = new ArrayList<FinanziaAziendaClass>();
finanziaAziendaClassArrayList.add(new FinanziaAziendaClass("C corporation",
"Informatico","15","10000.00","40000.00",
R.drawable.contorni_lavori_moddata,R.drawable.linee_separatorie_lavori_modificate));
nella classe customizzata, serve per effettuare
elementi presenti nell'arrayList in oggetti View da
CustomAdapterFinanziaAzienda finanziaAziendaAdapter = new CustomAdapterFinanziaAzienda(getApplicationContext(),R.layout.custom_adapter_finanzia_azienda,finanziaAziendaClassArrayList);
//Riferimento alla listView all'interno dell'activity_cerca_lavoro, con l'adapter settato per poter mostrare un array di oggetti view
listaFinanziaAziende.setAdapter(finanziaAziendaAdapter);
}
public void recuperoPassaggioSoldi(){
TextView textViewSoldi = findViewById(R.id.textView_soldi);
TextView textViewSoldiShop = findViewById(R.id.textView_soldi_shop);
soldi = getIntent().getDoubleExtra("valore_soldi",soldi);
soldiShop = getIntent().getIntExtra("valore_soldi_shop",soldiShop);
String soldiString = Double.toString(soldi);
String soldiShopString = String.valueOf(soldiShop);
textViewSoldi.setText(soldiString);
textViewSoldiShop.setText(soldiShopString);
}
} I had thought about finding the id inside the CustomAdapter class, but I have no idea how to do it, perhaps with getItem. A thousand thanks
XML
<androidx.constraintlayout.widget.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">
<ImageView
android:id="@+id/imageView_finanzia_azienda_contorno_lavoro"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="55dp"
android:layout_marginTop="16dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/contorni_lavori_moddata" />
<LinearLayout
android:layout_width="291dp"
android:layout_height="108dp"
android:layout_marginStart="62dp"
android:layout_marginTop="23dp"
android:orientation="vertical"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/textView_finanzia_azienda_nome_azienda"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="8dp"
android:text="Nome azienda:"
android:textColor="@color/black" />
<TextView
android:id="@+id/textView_finanzia_azienda_settore_azienda"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="8dp"
android:text="Settore azienda:"
android:textColor="@color/black" />
<TextView
android:id="@+id/textView_finanzia_azienda_numero_dipendenti"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="8dp"
android:text="Numero dipendenti"
android:textColor="@color/black" />
<TextView
android:id="@+id/textView_finanzia_azienda_ultimo_fatturato"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="8dp"
android:text="Ultimo fatturato:"
android:textColor="@color/black" />
<TextView
android:id="@+id/textView_finanzia_azienda_valore_azienda"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="8dp"
android:text="Valore azienda:"
android:textColor="@color/black" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout13"
android:layout_width="280dp"
android:layout_height="52dp"
android:layout_marginStart="64dp"
android:layout_marginTop="134dp"
android:orientation="horizontal"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<Button
android:id="@+id/button_finanzia_azienda_dieci_per_cento"
android:layout_width="15dp"
android:layout_height="35dp"
android:layout_weight="1"
android:background="@drawable/bottone_moddato_custom_lavoro"
android:text="10%"
app:backgroundTint="@null"
tools:ignore="TouchTargetSizeCheck" />
<Button
android:id="@+id/button_finanzia_azienda_venti_per_cento"
android:layout_width="15dp"
android:layout_height="35dp"
android:layout_marginStart="6dp"
android:layout_weight="1"
android:background="@drawable/bottone_moddato_custom_lavoro"
android:text="20%"
app:backgroundTint="@null"
tools:ignore="TouchTargetSizeCheck" />
<Button
android:id="@+id/button_finanzia_azienda_trenta_per_cento"
android:layout_width="15dp"
android:layout_height="35dp"
android:layout_marginStart="6dp"
android:layout_weight="1"
android:background="@drawable/bottone_moddato_custom_lavoro"
android:text="30%"
app:backgroundTint="@null"
tools:ignore="TouchTargetSizeCheck" />
<Button
android:id="@+id/button_finanzia_azienda_quarantanove_per_cento"
android:layout_width="15dp"
android:layout_height="35dp"
android:layout_marginStart="6dp"
android:layout_weight="1"
android:background="@drawable/bottone_moddato_custom_lavoro"
android:text="49%"
app:backgroundTint="@null"
tools:ignore="TouchTargetSizeCheck" />
</LinearLayout>
<ImageButton
android:id="@+id/imageButton_finanzia_azienda_informazioni_azienda"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginTop="16dp"
android:background="@android:drawable/ic_menu_info_details"
android:tint="#0277BD"
app:layout_constraintStart_toEndOf="@+id/imageView_finanzia_azienda_contorno_lavoro"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="TouchTargetSizeCheck" />
<ImageView
android:id="@+id/imageView_finanzia_azienda_linea_separatoria"
android:layout_width="300dp"
android:layout_height="38dp"
android:layout_marginStart="55dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView_finanzia_azienda_contorno_lavoro"
app:srcCompat="@drawable/linee_separatorie_lavori_modificate" />
</androidx.constraintlayout.widget.ConstraintLayout>
I try to use onItemClick but don't work. Thank you :)