java - 当 fragment 被调用时,我需要 fragment 中的 listView

标签 java android listview mobile

我需要帮助。我有一个包含 2 个 fragment 的 Activity ,第一个 fragment 工作正常,但第二个 fragment 具有 ListView ,当我启动该 fragment 时不显示项目,仅在单击 crearComentario 按钮并返回 fragment 时显示项目,仅当我这样做时, ListView 才会加载项目。这是我的类(class),如果您看到的话,我用从 StringRequest 和 ResponseListener 获得的数据填充 ListView ,它工作正常,但唯一不起作用的部分是当我从第一个 fragment 更改为第一个 fragment 时我想显示项目第二个 fragment (我有 listView 的 fragment )。请有人知道当我导航到 fragment a 到 fragment b 时如何显示 ListView

  public class NegocioCommentFragment extends Fragment {
private ListView listView;
private FloatingActionButton crearComentario;
private String neg_Nombre;
final List<HashMap<String, String>> mapFill = new ArrayList<HashMap<String, String>>();
private String neg_id;


public NegocioCommentFragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.fragment_negocio_comments, container, false);


}


public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);


    crearComentario = (FloatingActionButton) view.findViewById(R.id.agregarComentario);
    listView = (ListView) view.findViewById(R.id.commentsList);

    SharedPreferences sharedPreferences = getActivity().getSharedPreferences("userData", MODE_PRIVATE);
    final String usrapp_id = sharedPreferences.getString("usrapp_id", null);


    //Accedemos a los extras para ectraer nombre e id del negocio
    Intent negocioInfo = getActivity().getIntent();
    final Bundle paqueteInfo = negocioInfo.getExtras();
    neg_Nombre = paqueteInfo.getString("neg_Nombre");
    neg_id = paqueteInfo.getString("neg_id");


    crearComentario.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent enviarComentarioActivity = new Intent(getContext(), EnviarComentario.class);
            enviarComentarioActivity.putExtra("neg_Nombre", neg_Nombre);
            enviarComentarioActivity.putExtra("usrapp_id", usrapp_id);
            enviarComentarioActivity.putExtra("neg_id", neg_id);
            startActivity(enviarComentarioActivity);


        }
    });

    //Creamos arreglos para el adaptador de los comentarios
    String[] negInfo = new String[]{"nombre", "nc_comentario",};
    int[] views = new int[]{R.id.userNameCommentTextView, R.id.userCommentTextView};

    //LLenamos los componentes de la lista de comentarios con los arreglos en donde se guardaron
    SimpleAdapter adapter = new SimpleAdapter(getContext(), mapFill, R.layout.diseno_negocio_comments, negInfo, views);
    listView.setAdapter(adapter);

    //Traemos todos los comentarios del que se han hecho últimamente al negocio
    Response.Listener<String> responseListener = new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            try {
                JSONArray comentariosArray = new JSONArray(response);

                for (int i = 0; i < comentariosArray.length(); i++) {

                    JSONObject comentarioJson = comentariosArray.getJSONObject(i);

                    String nombre = comentarioJson.getString("nombre");
                    String comentario = comentarioJson.getString("nc_comentario");
                    String fechaComentario = comentarioJson.getString("nc_fecha");
                    String calificacion = comentarioJson.getString("calificacion");

                    HashMap<String, String> commentsInfo = new HashMap<String, String>();

                    commentsInfo.put("nombre", nombre);
                    commentsInfo.put("nc_comentario", comentario);
                    commentsInfo.put("fechaComentario", fechaComentario);
                    commentsInfo.put("calificacion", calificacion);
                    mapFill.add(commentsInfo);

                }


            } catch (JSONException e) {
                e.printStackTrace();
            }

        }
    };
    TraeComentariosRequest traeComentariosRequest = new TraeComentariosRequest(neg_id, responseListener);
    RequestQueue queue = Volley.newRequestQueue(getActivity());
    queue.add(traeComentariosRequest);




}

@Override
public void onStart() {
    super.onStart();

}

}

最佳答案

mapFill 添加项目后,您需要为 ListView 调用 adapter.notifyDataSetChanged();

关于java - 当 fragment 被调用时,我需要 fragment 中的 listView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46800941/

相关文章:

java - 设置土耳其语和英语语言环境 : translate Turkish characters to Latin equivalents

android - 应用程序被杀死后推送通知

Android 其底部布局上方可能的键盘?

java - 自定义布局的Android ArrayAdapter问题

css - 在未聚焦的 ListView 上禁用灰色选择

java - 是否有一个通用的mime类型可以设置为response.setContentType来处理所有类型的文件?

java - 如何暂停javafx类

java - payara-micro 从 java main 方法开始

android - 为什么activity_main.xml屏幕只是白色?

java - 我是否在不知情的情况下使用了多态性?