ช่วยหาทางแก้ไขหน่อยค่ะ พอดีมีปัญหาการแสดงผลข้อมูลเป็น Recycler View จะกด Subsrcibe...

การสนทนาใน 'Android Developer' เริ่มโดย Pichamon Phatcharasirinawakun, 25 พฤศจิกายน 2016

< Previous Thread | Next Thread >
    ช่วยหาทางแก้ไขหน่อยค่ะ พอดีมีปัญหาการแสดงผลข้อมูลเป็น Recycler View จะกด Subsrcibe หลังจากป้อนค่า ก็ไม่ยอมแสดงผ่านหน้าจออ่าค่ะ และมีข้อสงสัย คือ Runnable ไม่อ่านค่าอ่าค่ะ ก็เลยไม่เข้าใจ Runnable มีส่วนหรือเปล่าอ่าค่ะ รายละเอียดโค๊ตตามนี้ค่ะ public class SmartFragment extends Fragment { RecyclerView recyclerView; private ArrayList dataList; private EditText subTopic; private MqttAndroidClient mqttAndroidClient = null; private Context context = null; private final int qos = 0; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setHasOptionsMenu(true); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_smart, container, false); RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.rvData); recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); //recyclerView.setHasFixedSize(true); //dataList = DataLab.getInstance(getActivity()).getDataList(); mqttAndroidClient = SubscribeTop2.getInstance().getmqttClient().mqttAndroidClient; return view; } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.menu_smart, menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == R.id.action_add) { showSubTopicDialog(); return true; } if (id == R.id.action_remove) { return true; } if (id == R.id.action_empty) { return true; } return super.onOptionsItemSelected(item); } public void showSubTopicDialog() { final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); final LayoutInflater inflater = this.getLayoutInflater(null); final View dialogView = inflater.inflate(R.layout.layout_add_subtopic_dialog, null, false); subTopic = (EditText) dialogView.findViewById(R.id.subTopic); builder.setTitle("Add Subscribe"); builder.setView(dialogView); //builder.setMessage("subscribeTopic"); builder.setNegativeButton("Subscribe", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, final int which) { final String subbTopic = subTopic.getText().toString(); try { if (mqttAndroidClient != null){ mqttAndroidClient.subscribe(subbTopic, 0, null, new IMqttActionListener() { @Override public void onSuccess(IMqttToken asyncActionToken) { Log.d("MessageMQTT", "Subscribed!"); } @Override public void onFailure(IMqttToken asyncActionToken, Throwable exception) { } }); mqttAndroidClient.subscribe(subbTopic, 0, new IMqttMessageListener() { @Override public void messageArrived(String topic, MqttMessage message) throws Exception { Log.d("MessageMQTT", "message: " + new String(message.getPayload())); String mail = new String(message.getPayload()); JSONObject decode = new JSONObject(mail); String temperature = decode.getString("temperature"); String humidity = decode.getString("humidity"); Data data = new Data(); data.setTemperature(temperature); data.setHumidity(humidity); dataList = new ArrayList(); dataList.add(data); v Runnable run = new Runnable() { @Override public void run() { DataAdapter adapter = new DataAdapter(dataList); System.out.println(dataList); recyclerView.setAdapter(adapter); } }; }}); } } catch (MqttException e) { e.printStackTrace(); } } }); EventBusCart.getInstance().getEventBus().post(true); AlertDialog subtopic = builder.create(); subtopic.show(); } }
    [​IMG]
     
  1. ี่คุณสั่งให้ Runnable ทำงานรึป่าวครับพอดีมองไม่เห็น
     
  2. จริงๆควรจะ log ดูแต่ละจุดที่น่าสงสัยครับ แต่ถ้าเอาตรง runnableก็ ลองเอาโค๊ดใน method run ออกมาไว้ข้างนอกดูก่อนครับ ว่าได้ไหม
     
  3. Lek Cool

    Lek Cool Guest

    0
    0
    0
    อันนี้ขอถามก่อนครับว่าทำไมถึงต้องใช้ runnable แล้ว runnable ต้องใช้คู่กับ handler นะครับ
     
  4. Ponglang Petrung

    Ponglang Petrung Guest

    0
    0
    0
    จริงๆ ผมอ่านๆ ก็ยังงงอยู่นะ แต่ทำไมต้องมี Runnable ด้วยครับ งงเบย !!! จริงๆ มันเอาไว้การ request check คอย หรือ Thread ข้อมูลครับ หรือตามเม้นบน เพราะ ส่วนใหญ่จะเป็นการโหลด data จริงๆ เราไม่ต้องใส่ Runnable ไปเลยครับ เอาคำสั่งนี้ไป ส่งไปใน onCreate ดีกว่า แล้ว setAdapte ไว้ตามเดิมครับ DataAdapter adapter = new DataAdapter(dataList); System.out.println(dataList); recyclerView.setAdapter(adapter);
     
  5. ตอนนี้ยังแก้ไม่ได้นะค่ะ ถึงลองทำดูแล้วยังไม่ได้อยู่ค่ะ ใครมีวิธีบอกได้ค่ะTT
     
  6. datalist แสดงข้อมูลแล้วค่ะ แต่ในแอพยังแสดงผลไม่ได้อยู่ค่ะ ต้องทำไงต่อค่ะ
     
  7. ใช้ Recyclerview ใช่ไหมครับ
     
  8. ข้อมูลโชว์แล้ว แต่จอไม่แสดงผลเหมือนเดิมค่ะ
     
  9. Krisorn Sejan

    Krisorn Sejan Guest

    0
    0
    0
    คือ เคยเขียนได้แล้วใช่ไหมครับ recyclerview อ่ะครับ สามารถเขียนให้โชว ข้อมูลเทสได้ ไรแบบนี้อ่ะ แต่พอมา custom เพิ่มปุ่มเข้าไป กลับไม่ทำงานเหรอ หรือว่ายังไม่เคยเขียนให้ใช้งานได้เลย
     
  10. เดาว่าลืม setLayoutManager ให้ recyclerView หรือเปล่า
     
  11. Ponglang Petrung

    Ponglang Petrung Guest

    0
    0
    0
    เอาตัวอย่างที่เอามาให้ดูซิ เพราะเอาแค่หน้า main. มา แต่ไม่มีหน้า adpter
     
< Previous Thread | Next Thread >

แบ่งปันหน้านี้