Android 仅显示一项而不是三项的回收器视图
我需要一些帮助,我正在用php和android开发一个应用程序。我正在使用“回收者”视图,但我遇到了问题,因为我的列表有3个项目,并且只显示一个,你能帮我吗?我将添加适配器和主适配器 AdapterLocalPersonalizadoAndroid 仅显示一项而不是三项的回收器视图,android,Android,我需要一些帮助,我正在用php和android开发一个应用程序。我正在使用“回收者”视图,但我遇到了问题,因为我的列表有3个项目,并且只显示一个,你能帮我吗?我将添加适配器和主适配器 AdapterLocalPersonalizado public class AdapterLocalPersonalizado extends RecyclerView.Adapter<AdapterLocalPersonalizado.MeuViewHolder> { Context ct
public class AdapterLocalPersonalizado extends RecyclerView.Adapter<AdapterLocalPersonalizado.MeuViewHolder> {
Context ctx;
List<Local> listaLocal;
connection con = new connection();
public AdapterLocalPersonalizado(List<Local> locais,Context ctx1) {
this.ctx = ctx1;
this.listaLocal = locais;
}
public class MeuViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
TextView nome,categoria,endereco,valor;
@SuppressLint("WrongViewCast")
public MeuViewHolder(@NonNull View view) {
super(view);
nome = (TextView) view.findViewById(R.id.namec);
categoria = (TextView) view.findViewById(R.id.categoria);
valor = (TextView) view.findViewById(R.id.valor);
endereco = (TextView) view.findViewById(R.id.ende);
view.setOnClickListener(this);
}
@Override
public void onClick(View v) {
int position = getAdapterPosition();
Local objSelecionado = listaLocal.get(position);
if(position != RecyclerView.NO_POSITION){
Intent intent = new Intent(ctx.getApplicationContext(), tela_lista_local.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Bundle bundle = new Bundle();
bundle.putInt("ID",objSelecionado.getId());
ctx.startActivity(intent);
}
}
}
@NonNull
@Override
public MeuViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
Local local = listaLocal.get(i);
Context context = viewGroup.getContext();
LayoutInflater inflater = LayoutInflater.from(context);
View linhaView = inflater.inflate(R.layout.activity_tela_lista_local_personalizada, viewGroup, false);
MeuViewHolder viewHolder = new MeuViewHolder(linhaView);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull AdapterLocalPersonalizado.MeuViewHolder meuViewHolder, int i) {
Local local = listaLocal.get(i);
TextView nome = meuViewHolder.nome;
nome.setText(local.getNome());
}
@Override
public int getItemCount() {
return listaLocal.size();
}
}
公共类适配器LocalPersonalizado扩展了RecyclerView.Adapter{
上下文ctx;
列表法;
连接con=新连接();
公共适配器LocalPersonalizado(列出位置,上下文ctx1){
这个.ctx=ctx1;
this.listaLocal=locais;
}
公共类MeuViewHolder扩展了RecyclerView.ViewHolder实现了View.OnClickListener{
TextView nome、categoria、endereco、valor;
@SuppressLint(“错误视图投射”)
公共MeuViewHolder(@NonNull视图){
超级(视图);
nome=(TextView)view.findViewById(R.id.namec);
categoria=(TextView)view.findViewById(R.id.categoria);
valor=(TextView)view.findViewById(R.id.valor);
endereco=(TextView)view.findViewById(R.id.ende);
view.setOnClickListener(这个);
}
@凌驾
公共void onClick(视图v){
int position=getAdapterPosition();
Local objSelecionado=listaLocal.get(位置);
如果(位置!=RecyclerView.无位置){
Intent Intent=新Intent(ctx.getApplicationContext(),tela\u lista\u local.class);
intent.setFlags(intent.FLAG\u活动\u新任务);
Bundle=新Bundle();
bundle.putInt(“ID”,objSelecionado.getId());
星触觉(意图);
}
}
}
@非空
@凌驾
public MeuViewHolder onCreateViewHolder(@NonNull ViewGroup ViewGroup,int i){
Local Local=listaLocal.get(i);
Context=viewGroup.getContext();
LayoutFlater充气机=LayoutFlater.from(上下文);
View linhaView=充气机。充气(R.layout.activity\u tela\u lista\u local\u personalizada,viewGroup,false);
Meuviewolder viewHolder=新的Meuviewolder(linhaView);
返回视图持有者;
}
@凌驾
BindViewHolder上的公共无效(@NonNull AdapterLocalPersonalizado.MeuViewHolder MeuViewHolder,int i){
Local Local=listaLocal.get(i);
TextView nome=meuViewHolder.nome;
nome.setText(local.getNome());
}
@凌驾
public int getItemCount(){
返回listaLocal.size();
}
}
tela_lista_本地(主要)
公共类tela_lista_local活动{
AdapterLocalPersonalizado AdapterLocalPersonalizado;
列出本地列表;
本地的;
字符串endereco、categoria、token;
连接con=新连接();
ListarLocalAsyncTask listarLocaisAsyncTask;
回收视图列表视图;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u tela\u lista\u local);
token=“tcc”;
Intent it=getIntent();
categoria=it.getStringExtra(“categoria”);
endereco=it.getStringExtra(“endereco”);
listView=findViewById(R.id.RecycleServiceWebLocal);
listarLocaisAsyncTask=新建ListarLocalAsyncTask();
listarLocaisAsyncTask.execute();
}
公共类ListarLocalAsyncTask扩展异步任务{
字符串api_令牌,查询;
httpurl连接连接;
URL=null;
Uri.Builder;
最终字符串URL\u WEB\u服务=”http://192.168.0.110/Controller/APIListarLocal.php";
最终整型读取\u超时=10000;//MILISSEGUNDOS
最终int连接超时=30000;
int-response_码;
公共列表arlocalasynctask(){
this.builder=新Uri.builder();
建造商。附录参数(“api_categoria”,categoria);
}
@凌驾
受保护的void onPreExecute(){
Log.i(“APIListar”、“onPreExecute()”);
}
@凌驾
受保护的字符串背景(字符串…字符串){
Log.i(“APIListar”、“doInBackground()”);
//Gerar o conteúdo para URL
试一试{
url=新url(url\u WEB\u服务);
}捕获(格式错误){
Log.i(“APIListar”、“MalformedURLException-->”+e.getMessage());
}捕获(例外e){
Log.i(“APIListar”、“doInBackground()-->”+e.getMessage());
}
//Gerar uma Requissiço HTTP-POST-Result seráum ArrayJson
//康涅狄格州
试一试{
conn=(HttpURLConnection)url.openConnection();
conn.setReadTimeout(读取超时);
连接设置连接超时(连接超时);
conn.setRequestMethod(“POST”);
conn.setRequestProperty(“字符集”、“utf-8”);
conn.setDoInput(真);
连接设置输出(真);
连接();
}捕获(例外e){
Log.i(“APIListar”、“HttpURLConnection-->”+e.getMessage());
}
//AcimoNo.O令牌E/ouououts
//这个目标包括,你可以选择。
//复杂积垢
试一试{
query=builder.build().getEncodedQuery();
OutputStream=conn.getOutputStream();
BufferedWriter=新的BufferedWriter(
新的OutputStreamWriter(流,“utf-8”);
writer.write(查询);
writer.flush();
writer.close();
stream.close();
连接();
}捕获(例外e){
Log.i(“APIListar”、“BufferedWriter-->”+e.getMessage());
}
//接收器o响应-
public class tela_lista_local extends AppCompatActivity {
AdapterLocalPersonalizado adapterLocalPersonalizado;
List<Local> localList;
Local local;
String endereco,categoria,token;
connection con = new connection();
ListarLocalAsyncTask listarLocaisAsyncTask;
RecyclerView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tela_lista_local);
token = "tcc";
Intent it = getIntent();
categoria = it.getStringExtra("categoria");
endereco = it.getStringExtra("endereco");
listView = findViewById(R.id.recyclerViewLocal);
listarLocaisAsyncTask = new ListarLocalAsyncTask();
listarLocaisAsyncTask.execute();
}
public class ListarLocalAsyncTask extends AsyncTask<String, String, String> {
String api_token, query;
HttpURLConnection conn;
URL url = null;
Uri.Builder builder;
final String URL_WEB_SERVICES = "http://192.168.0.110/Controller/APIListarLocal.php";
final int READ_TIMEOUT = 10000; // MILISSEGUNDOS
final int CONNECTION_TIMEOUT = 30000;
int response_code;
public ListarLocalAsyncTask( ){
this.builder = new Uri.Builder();
builder.appendQueryParameter("api_categoria", categoria);
}
@Override
protected void onPreExecute() {
Log.i("APIListar", "onPreExecute()");
}
@Override
protected String doInBackground(String... strings) {
Log.i("APIListar", "doInBackground()");
// Gerar o conteúdo para a URL
try {
url = new URL(URL_WEB_SERVICES);
} catch (MalformedURLException e) {
Log.i("APIListar", "MalformedURLException --> " + e.getMessage());
} catch (Exception e) {
Log.i("APIListar", "doInBackground() --> " + e.getMessage());
}
// Gerar uma requisição HTTP - POST - Result será um ArrayJson
// conn
try {
conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(READ_TIMEOUT);
conn.setConnectTimeout(CONNECTION_TIMEOUT);
conn.setRequestMethod("POST");
conn.setRequestProperty("charset", "utf-8");
conn.setDoInput(true);
conn.setDoOutput(true);
conn.connect();
} catch (Exception e) {
Log.i("APIListar", "HttpURLConnection --> " + e.getMessage());
}
// Adicionar o TOKEN e/ou outros parâmetros como por exemplo
// um objeto a ser incluido, deletado ou alterado.
// CRUD completo
try {
query = builder.build().getEncodedQuery();
OutputStream stream = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(stream, "utf-8"));
writer.write(query);
writer.flush();
writer.close();
stream.close();
conn.connect();
} catch (Exception e) {
Log.i("APIListar", "BufferedWriter --> " + e.getMessage());
}
// receber o response - arrayJson
// http - código do response | 200 | 404 | 503
try {
response_code = conn.getResponseCode();
if (response_code == HttpURLConnection.HTTP_OK) {
InputStream input = conn.getInputStream();
BufferedReader reader = new BufferedReader(
new InputStreamReader(input)
);
StringBuilder result = new StringBuilder();
String linha = null;
while ((linha = reader.readLine()) != null) {
result.append(linha);
}
return result.toString();
} else {
return "HTTP ERRO: " + response_code;
}
} catch (Exception e) {
Log.i("APIListar", "StringBuilder --> " + e.getMessage());
return "Exception Erro: " + e.getMessage();
} finally {
conn.disconnect();
}
}
@Override
protected void onPostExecute(String result) {
Log.i("APIListar", "onPostExecute()--> Result: " + result);
try {
Local local;
JSONArray jsonArray = new JSONArray(result);
localList = new ArrayList<>();
if (jsonArray.length() != 0) {
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
local = new Local(jsonObject.getInt("id"),
jsonObject.getString("nome"),
jsonObject.getString("endereco"),
jsonObject.getString("categoria"),
jsonObject.getString("valor"));
localList.add(local);
Log.i("APIListar", "Estado: -> " + local.getId() + " - " +local.getNome());
}
Toast.makeText(tela_lista_local.this, localList.size() + " local Listados no LogCat", Toast.LENGTH_LONG)
.show();
initial();
}
} catch (Exception e) {
Log.i("APIListar", "onPostExecute()--> " + e.getMessage());
}
}
public void initial(){
adapterLocalPersonalizado = new AdapterLocalPersonalizado(localList, getApplicationContext());
listView.setAdapter(adapterLocalPersonalizado);
listView.setLayoutManager(new LinearLayoutManager(tela_lista_local.this));
}
}
}