Olá, pessoal, tudo bem?
Estou já faz um tempo tentando descobrir o que está errado com o meu código vou mandar uma imagem de como gostaria de fazer o que estou tentando kkk.
Para isso eu fiz um Activity chamada AcomodacaoActivity.class (onde já inicia um ListView utlizando um RecyclerView com ListAdapter veja abaixo:
package br.com.neetosena.ireland2;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import java.util.List;
import br.com.neetosena.ireland2.AlertDialog.AlertDailogAcom;
public class AcomodacaoActivity extends AppCompatActivity {
private RecyclerView mRecyclerView;
private List<DadosAcom> mListAc;
private AlertDialog.Builder mAlertDialog;
private EditText alertNome;
private EditText alertData;
private EditText alertEnd;
private EditText alertFone;
private EditText alertValor;
private CheckBox alertVisitado;
private CheckBox alertAprovado;
private AlertDailogAcom alerta;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_acomodacao);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setTitle("Acomodação");
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View mView) {
alerta = new AlertDailogAcom(getBaseContext(), mListAc);
alerta.callAlertDialog(AcomodacaoActivity.this, mView);
//alerta.getmListAc(d);
/*mAlertDialog = new AlertDialog.Builder(AcomodacaoActivity.this);
mView = getLayoutInflater().inflate(R.layout.alert_dialog_acom, null);
mAlertDialog.setView(mView);
alertNome = (EditText) mView.findViewById(R.id.edt_alert_nome);
alertData = (EditText) mView.findViewById(R.id.edt_alert_data);
alertEnd = (EditText) mView.findViewById(R.id.edt_alert_end);
alertFone = (EditText) mView.findViewById(R.id.edt_alert_fone);
alertValor = (EditText) mView.findViewById(R.id.edt_alert_valor);
alertVisitado = (CheckBox) mView.findViewById(R.id.chk_alert_visitado);
alertAprovado = (CheckBox) mView.findViewById(R.id.chk_alert_aprovado);
mAlertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
mListAc = getmListAc(1);
Toast.makeText(getBaseContext(), "Clicou OK!", Toast.LENGTH_LONG).show();
}
})
.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(getBaseContext(), "Clicou Cancel!", Toast.LENGTH_LONG).show();
}
});
AlertDialog alertDialog = mAlertDialog.create();
alertDialog.show();*/
}
});
mRecyclerView = (RecyclerView) findViewById(R.id.rv_list_acomodacao1);
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setOnScrollChangeListener(new View.OnScrollChangeListener() {
@Override
public void onScrollChange(View view, int i, int i1, int i2, int i3) {
}
});
LinearLayoutManager llm = new LinearLayoutManager(getParent());
llm.setOrientation(LinearLayoutManager.VERTICAL);
mRecyclerView.setLayoutManager(llm);
//mListAc = alerta.getmListAc(1);
//mListAc = getmListAc(1);
//mlista thiengo fez diferente mListAc((MainActivity)getActivity).getSetCarList(10);
DadosAcomAdapter adapter = new DadosAcomAdapter(getBaseContext(), mListAc);
mRecyclerView.setAdapter(adapter);
}
/*public List<DadosAcom> getmListAc (int qtd) {
String[] nome = new String[] {"Sr. Willians"};
String[] data = new String[] {"19/01/2018"};
boolean[] check = new boolean[] {true};
List<DadosAcom> listAux = new ArrayList<>();
for (int i = 0; i < qtd; i++) {
DadosAcom d = new DadosAcom(nome[i % nome.length], data[i % data.length], check[i % check.length]);
listAux.add(d);
}
return (listAux);
}*/
/*public List<DadosAcom> getmListAc (int qtd) {
DadosAcom d = new DadosAcom();
String[] nome = new String[1];
String[] data = new String[1];
boolean[] check = new boolean[1];
List<DadosAcom> listAux = new ArrayList<>();
for(int i = 0; i < qtd; i++) {
nome[i] = alertNome.getText().toString();
d.setNome(nome[i]);
data[i] = alertData.getText().toString();
d.setData(data[i]);
check[i] = alertVisitado.isClickable();
d.setCheck(check[i]);
listAux.add(d);
System.out.println(listAux.toString());
}
return (listAux);
}*/
}
Criei um AlertDialog customizado:
package br.com.neetosena.ireland2.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import java.util.ArrayList;
import java.util.List;
import br.com.neetosena.ireland2.DadosAcom;
import br.com.neetosena.ireland2.R;
/**
- Created by Neto on 01/01/2018.
*/
public class AlertDailogAcom extends AppCompatActivity {
private AlertDialog.Builder mAlertDialog;
private EditText alertNome;
private EditText alertData;
private EditText alertEnd;
private EditText alertFone;
private EditText alertValor;
private CheckBox alertVisitado;
private CheckBox alertAprovado;
public List<DadosAcom> mListAc;
private LayoutInflater mLayoutInflater;
private DadosAcom d = new DadosAcom();
Intent i = new Intent();
Bundle b = new Bundle();
public AlertDailogAcom() {
}
public AlertDailogAcom(Context context, List<DadosAcom> mListAc) {
this.mListAc = mListAc;
mLayoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public void callAlertDialog(Context context, View mView) {
mAlertDialog = new AlertDialog.Builder(context);
mView = mLayoutInflater.inflate(R.layout.alert_dialog_acom, null);
mAlertDialog.setView(mView);
alertNome = (EditText) mView.findViewById(R.id.edt_alert_nome);
alertData = (EditText) mView.findViewById(R.id.edt_alert_data);
alertEnd = (EditText) mView.findViewById(R.id.edt_alert_end);
alertFone = (EditText) mView.findViewById(R.id.edt_alert_fone);
alertValor = (EditText) mView.findViewById(R.id.edt_alert_valor);
alertVisitado = (CheckBox) mView.findViewById(R.id.chk_alert_visitado);
alertAprovado = (CheckBox) mView.findViewById(R.id.chk_alert_aprovado);
mAlertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int position) {
getmListAc(d);
}
})
.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
AlertDialog alerta = mAlertDialog.create();
alerta.show();
}
public List<DadosAcom> getmListAc(DadosAcom d) {
String[] nome = new String[3];
String[] data = new String[3];
boolean[] check = new boolean[3];
String mensagem = "";
mListAc = new ArrayList<>();
if (alertNome == null && alertData == null && alertVisitado == null) {
Log.i("LOG", "alertNome == null && alertData == null && alertVisitado == null");
d.setNome("Campo vazio");
mensagem = d.getNome();
//mListAc.add(d);
} else {
for (int i = 0; i < nome.length; i++) {
Log.i("LOG", "adicionando alertNome no array");
nome[i] = alertNome.getText().toString();
d.setNome(nome[i]);
data[i] = alertData.getText().toString();
d.setData(data[i]);
check[i] = alertVisitado.isClickable();
d.setCheck(check[i]);
}
}
mListAc.add(d);
return (mListAc);
}
}
O DadosAcomDapter:
package br.com.neetosena.ireland2;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.TextView;
import java.util.List;
import br.com.neetosena.ireland2.AlertDialog.AlertDailogAcom;
import br.com.neetosena.ireland2.interfaces.RecyclerViewOnClickListenerHack;
/**
- Created by Neto on 29/12/2017.
*/
public class DadosAcomAdapter extends RecyclerView.Adapter<DadosAcomAdapter.MyViewHolder>{
private List<DadosAcom> mListAcom;
private LayoutInflater mLayoutInflater;
private RecyclerViewOnClickListenerHack mRecyclerViewOnClickListenerHack;
private Context c;
private View mView;
private AlertDailogAcom alertDailogAcom = new AlertDailogAcom();
private DadosAcom d = new DadosAcom();
public DadosAcomAdapter(Context c, List<DadosAcom> l) {
mListAcom = l;
mLayoutInflater = (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
Log.i("LOG", "onCreateViewHolder");
View v = mLayoutInflater.inflate(R.layout.item_acomodacao1, viewGroup, false);
MyViewHolder mvh = new MyViewHolder(v);
return mvh;
}
@Override
public void onBindViewHolder(MyViewHolder myViewHolder, int position) {
Log.i("LOG", "onBindViewHolder");
myViewHolder.tvData.setText(alertDailogAcom.mListAc.get(position).getData());
myViewHolder.ckbVisita.setText(alertDailogAcom.mListAc.get(position).getNome());
myViewHolder.ckbVisita.setTextIsSelectable(alertDailogAcom.mListAc.get(position).isCheck());
}
@Override
public int getItemCount() {
Log.i("LOG","getItemCount()" );
//return mListAcom.size();
return lista();
}
public int lista() {
if (alertDailogAcom != null) {
return alertDailogAcom.getmListAc(d).size();
} else {
//mListAcom = alertDailogAcom.getmListAc(1, d);
return 0;
}
}
public class MyViewHolder extends RecyclerView.ViewHolder {
public TextView tvData;
public CheckBox ckbVisita;
public MyViewHolder(View itemView) {
super(itemView);
tvData = (TextView)itemView.findViewById(R.id.tv_data);
ckbVisita = (CheckBox) itemView.findViewById(R.id.ckb_visita);
}
}
}
E o DadosAcom.class
package br.com.neetosena.ireland2;
import android.os.Parcel;
import android.os.Parcelable;
/**
- Created by Neto on 29/12/2017.
*/
public class DadosAcom implements Parcelable{
private String nome;
private String data;
private String endereco;
private String fone;
private double valor;
private boolean check = true;
public DadosAcom() {
}
public DadosAcom(Parcel parcel) {
this.nome = parcel.readString();
this.data = parcel.readString();
this.endereco = parcel.readString();
this.fone = parcel.readString();
this.valor = parcel.readDouble();
this.check = parcel.readByte() != 0;
}
public DadosAcom(String nome, String data, boolean check) {
this.nome = nome;
this.data = data;
this.check = check;
}
public DadosAcom(String nome, String data, String endereco, String fone, double valor, boolean check) {
this.nome = nome;
this.data = data;
this.endereco = endereco;
this.fone = fone;
this.valor = valor;
this.check = check;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public String getFone() {
return fone;
}
public void setFone(String fone) {
this.fone = fone;
}
public double getValor() {
return valor;
}
public void setValor(double valor) {
this.valor = valor;
}
public boolean isCheck() {
return check;
}
public void setCheck(boolean check) {
this.check = check;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeString(nome);
parcel.writeString(data);
parcel.writeString(endereco);
parcel.writeString(fone);
parcel.writeDouble(valor);
parcel.writeByte((byte) (check ? 1 : 0)); //if check == true, byte == 1
}
public static final Parcelable.Creator<DadosAcom> CREATOR = new Parcelable.Creator<DadosAcom>(){
@Override
public DadosAcom createFromParcel(Parcel parcel) {
return new DadosAcom(parcel);
}
@Override
public DadosAcom[] newArray(int i) {
return new DadosAcom[i];
}
};
}
Estou perdido pois eu precisaria que o list view de inicio, inicializa-se sem dado nenhum, depois que eu clicar no floatingButton que abriria um AlertDialog onde inseridas as informações e clicando em “Ok” para alimentar o listView.
Na sequência teria um outro listView teria a mesma informação mais de forma completa e também quando a pessoa conclui-se a visita marcaria como “visitado” clicando novamente no Item do ListView e marcaria como “Visitado” num checkBox após isso a informação que estava no listview abaixo apareceria com um risco no meio igual a imagem!