Цикл JsonArray успешен, но ничего не показывает

Я новичок в Android Studio. Я хочу создать RecyclerView, который будет отображаться только для текущего имени пользователя. Пример: Я вошел в систему с моим именем пользователя "rzyd", и я хочу показать свои заметки из базы данных. У меня белый дисплей, но это говорит об успехе. И мой логарифм показывает это: «E / RecyclerView: адаптер не подключен; макет пропускается». Кто-нибудь может мне помочь?

Это мои коды:

Catatan.java

public class Catatan extends AppCompatActivity {
private RecyclerView recyclerView;
private RecyclerView.Adapter adapter;
private List<ListItem> listItems;
Dialog dialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_catatan);
    recyclerView = findViewById(R.id.recyclerView);
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
    listItems = new ArrayList<>();
    dialog = new Dialog(this);
    loadRecyclerViewData();
}
public void loadRecyclerViewData(){
    final String url = "http://xxxxxxxxx.xxxxxxxxxx.com/tampilcatatan.php";
    dialog.setContentView(R.layout.cobaloding);
    dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
    dialog.show();
    dialog.setCanceledOnTouchOutside(false);
    dialog.setCancelable(false);
    Intent intent = getIntent();
    final String usernamenya = intent.getStringExtra("usernamev2");
    StringRequest stringRequest = new StringRequest(Request.Method.POST, url,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String s) {
                        try {
                            dialog.setCanceledOnTouchOutside(true);
                            dialog.setCancelable(true);
                            dialog.hide();
                            JSONObject jsonObject = new JSONObject(s);
                            String status = jsonObject.getString("status");
                            if (status.equals("sukses")){
                                Intent intent = getIntent();
                                String usernamenya = intent.getStringExtra("usernamev2");
                                Toast.makeText(getApplicationContext(), "Sukses, your username: " + usernamenya, Toast.LENGTH_LONG).show();
                                JSONArray array = jsonObject.getJSONArray("semua");
                                for (int i = 0; i < array.length(); i++) {
                                    JSONObject o = array.getJSONObject(i);
                                    ListItem item = new ListItem(
                                            o.getString("judul"),
                                            o.getString("catatan")
                                    );
                                    listItems.add(item);
                                }
                            } else {
                                dialog.setCanceledOnTouchOutside(true);
                                dialog.setCancelable(true);
                                dialog.hide();
                                Toast.makeText(getApplicationContext(), "Failed", Toast.LENGTH_LONG).show();
                            }
                            LinearLayoutManager manager = new LinearLayoutManager(getApplicationContext());
                            recyclerView.setLayoutManager(manager);
                            recyclerView.setHasFixedSize(true);
                            adapter = new CatatanAdapter(listItems, getApplicationContext());
                            recyclerView.setAdapter(adapter);
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    dialog.setCanceledOnTouchOutside(true);
                    dialog.setCancelable(true);
                    dialog.setContentView(R.layout.popup_koneksigagal);
                    dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
                    dialog.show();
                    error.printStackTrace();
                }
            }) {
        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            Map<String, String> params = new HashMap<>();
            Intent intent = getIntent();
            String usernamenya = intent.getStringExtra("usernamev2");
            params.put("username", usernamenya.trim());
            return params;
        }
    };
    Volley.newRequestQueue(this).add(stringRequest);
}

}

Мой адаптер:

public class CatatanAdapter extends 
RecyclerView.Adapter<CatatanAdapter.ViewHolder> {
private List<ListItem> listItems;
private Context context;

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View v = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.list_item, parent, false);
    return new ViewHolder(v);
}

public CatatanAdapter(List<ListItem> listItems, Context context) {
    this.listItems = listItems;
    this.context = context;
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    ListItem listItem = listItems.get(position);
    holder.textViewJudulnya.setText(listItem.getJudulnya());
    holder.textViewCatatannya.setText(listItem.getCatatannya());

}

@Override
public int getItemCount() {
    return listItems.size();
}

public class ViewHolder extends RecyclerView.ViewHolder {
    public TextView textViewJudulnya;
    public TextView textViewCatatannya;

    public ViewHolder(View itemView) {
        super(itemView);
        textViewJudulnya = itemView.findViewById(R.id.judulnya);
        textViewCatatannya = itemView.findViewById(R.id.catatannya);

    }
}
}

Мой скрипт php:

<?php
error_reporting(0);
$conn = mysqli_connect("localhost", "id6487272_kuch", "xxxxxxxxx", "id6487272_bowo_db");
$username = $_POST['username'];
$mysqli = "SELECT * FROM catatan WHERE username='$username'";
$result = mysqli_query($conn, $mysqli) or die('error: ' .mysql_error());
$rows = array();
while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
$rows[] = $row;
}
if (mysqli_num_rows($result) >= 1) {
echo json_encode(Array('status' => 'sukses'));
echo '{"semua":'.json_encode($rows).'}';
} else {
 echo json_encode(Array('status' => 'gagal'));  
}
?>

Скриншот с моего телефона:

Цикл JsonArray успешен, но ничего не показывает

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
61
2

Ответы 2

Вы можете переместить все это в onCreate. Это не должно дублироваться в ответе Volley.

LinearLayoutManager manager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(manager);
recyclerView.setHasFixedSize(true);
adapter = new CatatanAdapter(listItems, this);
recyclerView.setAdapter(adapter);

Затем вам нужно убедиться, что вы действительно получаете какие-либо значения JSON. То, что вы получили тост, не означает, что вы что-то зацикливаете

Например, вы, скорее всего, получите ParseExceptiom в logcat, потому что вы выводите два отдельных объекта JSON вместо одного.

Вам нужно это вместо этого

if (mysqli_num_rows($result) >= 1) {
    echo json_encode(Array('status' => 'sukses', 'semua' => $rows));
}

И я бы предложил попытаться распечатать отдельные элементы JSON в logcat, прежде чем начинать с RecyclerView.

Я делаю эту версию на php, и она хорошо работает .. 1. imghostr.com/1kCG4d7F 2. imghostr.com/3h4GyPYh

RASYIID AL FATTAH 24.07.2018 03:53

Он работал хорошо, когда я пытался сделать это без if else и проверки имени в php, но это покажет все значения из json ..

RASYIID AL FATTAH 24.07.2018 04:00

вот захват: 1. imghostr.com/HCWrcDgp 2. imghostr.com/kfzhM2th 3. imghostr.com/LMXF6BCL 4. imgur.com/a/G1h86oj

RASYIID AL FATTAH 24.07.2018 04:08

Не могли бы вы прекратить загружать изображения и отредактировать свой вопрос, включив в него текст?

OneCricketeer 24.07.2018 04:08

Попробуй это

recyclerView = findViewById(R.id.recyclerView);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(LinearLayoutManager(Catatan .this, 
LinearLayoutManager.VERTICAL, false));

Другие вопросы по теме